python中 gbk字符串被识别为unicode(就是读取到的应该是'内容内容'变成了 u'内容内容',这样应该如何解码?

怎么去掉u?

第1个回答  2015-09-04

你用的是哪个库 ,如果是pymssql 的话,我建议换个库我测试末尾带b字样的版本没有这个问题 

有些库是有这样的问题,所有编码自己加上U,尝试更换库试一下


刚才百度了一下,看到一个解决办法不错,考虑转载到我的空间,我确实遇到了这样的问题

方法如下:

python 提供了一个特殊的编码( raw_unicode_escape )用来处理这种情况:

In [4]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('raw_unicode_escape')
Out[4]: '\xe4\xbd\xa0\xe5\xa5\xbd'

In [5]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('raw_unicode_escape').decode('utf8')
Out[5]: u'\u4f60\u597d'

In [7]: print u'\u4f60\u597d'
你好

以前杂没发现这个方法呢...我遇到这个问题是找个关天,换了个库才搞定

第2个回答  2012-05-20
>>> '内容'.decode('gbk')
u'\u5185\u5bb9'
>>> print u'\u5185\u5bb9'
内容
>>> type(u'\u5185\u5bb9')
<type 'unicode'>
不解释追问

我没说清楚,比如 ‘虚拟票务'对应的gbk应该是 '\xd0\xe9\xc4\xe2\xc6\xb1\xce\xf1',我这里却被识别成了u '\xd0\xe9\xc4\xe2\xc6\xb1\xce\xf1',对u '\xd0\xe9\xc4\xe2\xc6\xb1\xce\xf1'decode('gbk')出错

第3个回答  2012-05-19
u'内容内容'.encode('gbk')追问

'内容内容'已经是gbk编码(u '\xd0\xe9\xc4\xe2\xc6\xb1\xce\xf1'),对这个字符串encode('gbk')时报错:
UnicodeEncodeError: 'gbk' codec can't encode character u'\xd0' in position 0: illegal multibyte sequence

追答

编码是gbk的,却被误认为是unicode了?直接转换成str再处理:
''.join(chr(ord(x)) for x in u'\xd0\xe9\xc4\xe2\xc6\xb1\xce\xf1')

本回答被提问者采纳
相似回答