我在python中从unicode转换为str时遇到了一些问题。 给出一些背景信息:
>>> u'\xce\xb1\xce\xac'.decode('utf8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
现在出于一些stange原因,我有一个库函数,在αά的情况下给出字符串u'\ xce \ xb1 \ xce \ xac',我需要得到字符串u'\ u03b1 \ u03ac'和我尝试的一切如果我尝试解码给我错误
不起作用>>> str(u'\xce\xb1\xce\xac')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
所以我需要一种在'xce \ xb1 \ xce \ xac'中制作u'xce \ xb1 \ xce \ xac'的方法,它不适用于str:
insert
欢迎任何关于如何做的想法。
答案 0 :(得分:2)
您的输入似乎是双重编码的,因此您应该:
>>> u'\xce\xb1\xce\xac'.encode('raw_unicode_escape').decode('utf8')
u'\u03b1\u03ac'
起初我认为你的终端编码是一个问题,它不接受打印'αά'.decode('utf8')
......
参见相关文章:
对不起我的错误。