如何将Big5编码的txt文件转换为UTF8编码的txt文件?

时间:2016-10-09 17:15:13

标签: encoding 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

还有其他转换方法吗?

我从here获得了txt文件,这是一个用台湾繁体中文写的中文名字列表。

1 个答案:

答案 0 :(得分:5)

查看文件的前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编码请求原始文件;让发端人处理它。

相关问题