#encoding #utf-8 #iconv #big5
#кодирование #utf-8 #iconv #big5
Вопрос:
У меня есть файл в кодировке Big5, который нельзя открыть с помощью Mac TextEdit. Интересно, как преобразовать весь файл в кодировку utf8, поскольку utf8 гораздо более универсален и распространен.
Я пытался использовать iconv в своем терминале, но он не работает. Я также не могу найти ничего полезного об этой ошибке в Google.
$ iconv -f BIG5 -t UTF8 in.txt > out.txt
iconv: in.txt:5:0: cannot convert
Есть ли другие способы конвертации?
Я получил текстовый файл отсюда, который представляет собой список китайских имен, написанных на тайваньском традиционном китайском.
Комментарии:
1. Какой это был формат? Мне нужно прочитать этот точно такой же файл.
2. @SteveHanov Это кодировка Big5.
Ответ №1:
Глядя на первые 20 строк вашего файла, становится ясно, что кодировка использует байт 0x8C в качестве первого байта некоторых многобайтовых последовательностей. Кодировки, обладающие этим свойством, следующие:
- BIG5
- BIG5-HKSCS
- CP932
- CP936
- CP949
- CP950
- GB18030
- GBK
- ДЖОХАБ
- Shift_JIS
- Shift_JISX0213
Попробуйте их по очереди:
$ for encoding in BIG5 BIG5-HKSCS CP932 CP936 CP949 CP950 GB18030 GBK
JOHAB Shift_JIS Shift_JISX0213; do
if head -n 20 < unique_names_2012.txt | iconv -f $encoding -t UTF-8 > /dev/null 2> /dev/null; then
echo $encoding ;
fi;
done
С помощью GNU libiconv он печатает
BIG5-HKSCS
CP950
GB18030
Это в кодировке GB18030?
$ iconv -f GB18030 < unique_names_2012.txt
показывает сотни строк, в которых используются символы в диапазоне PUA. Хотя это и не невозможно, это кажется маловероятным.
Это в кодировке CP950?
$ iconv -f CP950 < unique_names_2012.txt
выдает ошибку преобразования в строке 2294.
Это в кодировке BIG5-HKSCS?
$ iconv -f BIG5-HKSCS < unique_names_2012.txt
выдает ошибку преобразования в строке 713.
Итак, скорее всего, файл закодирован в варианте BIG5. Существует много таких вариантов, см. http://haible.de/bruno/charsets/conversion-tables/Chinese.html . Возможно, это расширение CP950 или расширение BIG5-HKSCS (поскольку на сегодняшний день это самые популярные кодировки из семейства BIG5).
Таким образом, такие ошибки преобразования вызваны нестандартизированным распространением вариантов BIG5.
Лучшее, что вы можете сделать, это запросить исходный файл в кодировке UTF-8; пусть с этим разбирается создатель.
Комментарии:
1. Спасибо, это действительно очень помогает!