Когда я использую iconv для преобразования из UTF16 в UTF8, тогда все в порядке, но наоборот, это не работает. У меня есть эти файлы:Преобразование UTF8 в UTF16 с помощью 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
Текст исправны в редакторе. Когда я запускаю это:
iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16.strings
Тогда я получаю этот результат:
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
Утилита file
не показывает ожидаемый формат файла и текст не хороший редактор смотреть либо. Может быть, iconv не создает надлежащую спецификацию? Я запускаю его в командной строке MAC.
Почему нет b-16 в соответствующем формате UTF-16LE? Есть ли другой способ преобразования utf8 в utf16?
Подробнее прорезь.
$ 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
Понятно, что спецификация отсутствует, когда я запускаю преобразование в UTF-16LE. Любая помощь по этому вопросу?
Что делать, если вы использовали 'iconv -f UTF-8 -t UTF-16LE a-8.strings -o b-16.strings' вместо этого? Я сомневаюсь, что это исправит, но это стоит того. – cha0site
Моя версия iconv не поддерживает параметр -o (MacOS). Как вы сказали, это, вероятно, не поможет. Спасибо за попытку в любом случае. –
На вашем выходе отображается значок 'iconv -f UTF-8 -t UTF-16 a-8.strings' (работает в системе little-endian), генерируя широкоугольный UTF-16 с спецификацией. Можете ли вы это подтвердить? Работает ли команда Mac OS 'iconv' иначе, чем в Linux? 'echo hello | iconv -f ascii -t UTF-16 | od -x' –