将unicode ucs4转换为utf8

时间:2016-07-08 20:49:23

标签: python unicode encoding utf-8

我有一个像'u'\ u00000958'这样的值从数据库返回,我想把这个字符串转换为utf8。我尝试这样的事情:

cp = u'\\U00000958'
value = cp.decode('unicode-escape').encode('utf-8')
print 'Value: " + value

我收到此错误:

  

UnicodeDecodeError:'ascii'编解码器无法解码字节0xe0的位置   0:序数不在范围内(128)

如何正确转换此值?

更多细节。我在2.7.10中使用ucs2。

1 个答案:

答案 0 :(得分:0)

对于unicode问题,通常有助于指定python 2与python 3,以及如何获得特定表示。

从第一句中不清楚实际值是什么,而不是它的显示方式。目前还不清楚value like u'\\U00000958'是一个1字符的unicode字符串,一个10字符的unicode字符串,一个14字符(ascii)字节字符串,还是其他东西。使用lentype可以确保您拥有的内容。

通过尝试解码cp,您暗示您知道cp是字节,但是编码是什么?错误消息表明它不是ascii字节。 0xe0是utf-8编码的典型起始字节。以下互动

>>> s = "u'\\U00000958'"
>>> se = eval(s)
>>> se
u'\u0958'
>>> se.encode(encoding='utf-8')
'\xe0\xa5\x98'
>>> 

向我建议,以\ xe0开头的cp是3个utf-8编码字节,而u'\\U00000958'是其unicode解码的可评估表示。