我正在从数据库中读取SQLASCII字符串,并且遇到了一些基于我声明的big5编码不能正确解码的字节。下面是简化后的问题。python的Big5编码表似乎不知道如何解码这两个字符。据我所知(我不是专家),这些是有效的中文字符,因为我可以使用Notepad++并更改编码,使它们显示为中文字符。我将它们在Notepad++中的外观与这个网站进行了比较,字符匹配,因此我假设它们是big5编码表的有效字节。
http://ash.jp/code/cn/big5tbl.htm
by = b'\xBD\xC6\xBB\x73'
print(by,len(by))
print(by.decode('big5'))b'\xbd\xc6\xbbs‘4
回溯(最近一次调用):文件"qtest1.py",第15行,在打印中(by.decode(‘big5’))文件"C:\Python32\lib\encodings\cp1252.py",第19行,在encode return codecs.charmap_encode(input,self.errors,encoding_table)中UnicodeEncodeError:'charmap‘编解码器无法编码位置0-1的字符:字符映射到
任何帮助都非常感谢...
发布于 2012-04-14 01:09:59
仔细看:那是一个UnicodeEncodeError --它不能编码,不能解码。还要看看它使用的模块:...\lib\encodings\cp1252.py。因此,有人试图将文本编码为cp1252。
事实上,解码为big5运行得很好--我可以运行你的代码并得到中文的characters1。问题出在你的终端上--Python试图用你的Windows代码页(cp1252)对中文字符进行编码,但它并不知道如何处理它们。您应该能够将它们写入使用合适的编码(UTF-8或big5)打开的文件,或者对它们执行任何需要的操作,只是不能将它们写入终端。
1大多数Linux终端使用UTF-8,所以任何字符都可以工作。
https://stackoverflow.com/questions/10143139
复制相似问题