3

我有一个 Big5 编码文件,Mac TextEdit 无法打开它。我想知道如何将整个文件转换为 utf8 编码,因为 utf8 更加普遍和普遍。

我曾尝试在终端中使用 iconv,但它不起作用。谷歌也找不到关于这个错误的任何有用信息。

$ iconv -f BIG5 -t UTF8 in.txt > out.txt
iconv: in.txt:5:0: cannot convert

有没有其他的转换方式?

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

4

1 回答 1

7

查看文件的前 20 行,很明显编码使用字节 0x8C 作为某些多字节序列的第一个字节。具有此属性的编码是:

  • 大五
  • BIG5-港股通
  • 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 编码的原始文件;让发起人来处理。

于 2016-10-15T11:06:39.717 回答