将unicode ucs4转换为utf8

2024-06-30 07:56:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像u'\U00000958'这样的值从数据库返回,我想把这个字符串转换成utf8。我试着这样做:

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

我得到这个错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

如何正确转换此值?在

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


Tags: 字符串in数据库value错误unicodeutf8cp
1条回答
网友
1楼 · 发布于 2024-06-30 07:56:37

对于unicode问题,通常有助于指定python2和python3,以及如何获得特定的表示。在

从第一句话就不清楚实际值是什么,而不是如何显示。不清楚value like u'\\U00000958'是1个字符的unicode字符串、10个字符的unicode字符串、14个字符(ascii)字节字符串,还是其他字符。使用len和{}可以用来确定你拥有什么。在

通过尝试解码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解码的可评估表示。在

相关问题 更多 >