Kiedy używam iconv do konwersji z UTF16 na UTF8, wszystko jest w porządku, ale na odwrót nie działa. Mam te pliki:Konwersja UTF8 do UTF16 przy użyciu iconv
a-16.strings: Little-endian UTF-16 Unicode c program text
a-8.strings: UTF-8 Unicode c program text, with very long lines
Tekst wyglądają OK w edytorze. Gdy ten:
iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16.strings
następnie uzyskać ten wynik:
b-16.strings: data
a-16.strings: Little-endian UTF-16 Unicode c program text
a-8.strings: UTF-8 Unicode c program text, with very long lines
Narzędzie file
nie wykazuje oczekiwany format pliku, a tekst nie wygląda dobrze w edytorze albo. Czy to możliwe, że iconv nie tworzy właściwej BOM? Uruchamiam go na linii poleceń MAC.
Dlaczego b-16 nie ma właściwego formatu UTF-16LE? Czy istnieje inny sposób konwersji utf8 na utf16?
Więcej informacji znajduje się poniżej.
$ iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16le-BAD-fromUTF8.strings
$ iconv -f UTF-8 -t UTF-16 a-8.strings > b-16be.strings
$ iconv -f UTF-16 -t UTF-16LE b-16be.strings > b-16le-BAD-fromUTF16BE.strings
$ file *s
a-16.strings: Little-endian UTF-16 Unicode c program text, with very long lines
a-8.strings: UTF-8 Unicode c program text, with very long lines
b-16be.strings: Big-endian UTF-16 Unicode c program text, with very long lines
b-16le-BAD-fromUTF16BE.strings: data
b-16le-BAD-fromUTF8.strings: data
$ od -c a-16.strings | head
0000000 377 376 /\0 * \0 \0 \f 001 E \0 S \0 K \0
$ od -c a-8.strings | head
0000000 / * * * Č ** E S K Y ( J V O
$ od -c b-16be.strings | head
0000000 376 377 \0 /\0 * \0 * \0 * \0 001 \f \0 E
$ od -c b-16le-BAD-fromUTF16BE.strings | head
0000000 /\0 * \0 * \0 * \0 \0 \f 001 E \0 S \0
$ od -c b-16le-BAD-fromUTF8.strings | head
0000000 /\0 * \0 * \0 * \0 \0 \f 001 E \0 S \0
Oczywistym jest, że brakuje specyfikacji materiałowej, gdy przeprowadzam konwersję do UTF-16LE. Każda pomoc w tej sprawie?
co, jeśli zamiast tego użyłeś 'iconv -f UTF-8-t UTF-16LE a-8.strings -o b-16. Stringi'? Wątpię, że to naprawi, ale warto spróbować. – cha0site
Moja wersja iconv nie obsługuje parametru -o (MacOS). Jak już powiedziałeś, prawdopodobnie to by nie pomogło. Dzięki za spróbuj. –
Twoje dane wyjściowe pokazują 'iconv -f UTF-8-t UTF-16 a-8.stringów (uruchamianych w systemie little-endian) generujących big-endian UTF-16 z LM. Czy możesz to potwierdzić? Czy polecenie 'iconv' w MacOS działa inaczej niż w Linuksie? 'echo cześć | iconv -f ascii -t UTF-16 | od -x' –