带有中文字符的Python中的编码错误

时间:2010-10-07 16:05:17

标签: python encoding cjk

我是初学者,无法在Python 2.7中将数十个(简体)中文字符解码为UTF-8的数十个CSV文件。

我不知道输入文件的编码,所以我尝试了所有可能的编码 - GB18030,UTF-7,UTF-8,UTF-16& UTF-32(LE& BE)。此外,为了更好的衡量,GBK和GB3212,虽然这些应该是GB18030的子集。当UTF到达第一个汉字时,它们都会停止。除GB18030外,其他编码在第一行的某处停止。我认为这将是解决方案,因为它读取了前几个文件并解码它们。我的部分代码,逐行阅读,是:

line = line.decode("GB18030")

我尝试解码的前两个文件工作正常。在第三个文件的中途,Python吐出

UnicodeDecodeError: 'gb18030' codec can't decode bytes in position 168-169: illegal multibyte sequence

在这个文件中,大约有一百万行中有大约5个这样的错误。

我在文本编辑器中打开输入文件并检查哪些字符给出了解码错误,前几个字符在CSV文件的特定列中都有欧元符号。我相信这些是拼写错误,所以我只想删除欧元字符。我想逐个检查编码错误的类型;我想摆脱所有的欧元错误,但在我先看看它们之前不想忽略别人。

编辑:我使用了chardet,它将GB2312作为编码,所有文件的置信度为.99。我尝试使用GB2312进行解码,其中包含:

UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 108-109: illegal multibyte sequence

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:1)

您可以尝试chardet

答案 2 :(得分:0)

试试这个:

codecs.open(file, encoding='gb18030', errors='replace')

不要忘记参数errors,您也可以将其设置为'忽略'