读书人

为什么字符u\x81转不了GBK解决方法

发布时间: 2012-04-06 12:22:24 作者: rapoo

为什么字符u'\x81'转不了GBK

Python code
>>> a = u'\x81'>>> a.encode('gbk')Traceback (most recent call last):  File "<pyshell#2>", line 1, in <module>    a.encode('gbk')UnicodeEncodeError: 'gbk' codec can't encode character u'\x81' in position 0: illegal multibyte sequence

在导出数据库触发器时发现中途报错,发现是有触发器包含这样的字符u'\x81',在转gbk时报错,这样怎么解决呢?

[解决办法]
首先你要知道u'\x81'这个unicode码表示的是什么,当然unicode不可能是8位,u'\x81'实际上是u'\x00\x81',查询维基百科(http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF)你可以知道u'\x00\x81'对应的是控制字符HOP,这个控制字符其实在unicode中并没有赋予具体的意义,只是预留的,用英语来说就是'A reserved control code',这种预留的控制字符在gbk编码中根本就不可能存在,所以转码错误是显然的。


[解决办法]
先搞清楚原始数据是什么:
Python code
print repr(objects[objname]) 

读书人网 >perl python

热点推荐