UnicodeEncodeError:'ascii'编解码器不能编码位置0-6的字符:序数不在范围内(128)

时间:2014-05-23 13:52:31

标签: python encoding utf-8 ascii decoding

我有一个名为elm的lxml.objectify.StringElement,它是:

u'\u266b\u266b\u266b\u266b\u266b\u266b\u266bHow do you get a job on the Yahoo staff when you are older?\u266b\u266b\u266b\u266b\u266b?'

我想把它变成str:

str(elm)

但是我收到了这个错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)  

2 个答案:

答案 0 :(得分:0)

我遇到了类似的情况,这样的事情对我有用(我现在无法找到代码):

a=u'\u266b\u266b\u266b\u266b\u266b\u266b\u266bHow do you get a job on the Yahoo staff when you are older?\u266b\u266b\u266b\u266b\u266b?'
print bytes(a.encode('utf-32'))

但是我用你的字符串得到了这个:

��k&k&k&k&k&k&k&How do you get a job on the Yahoo staff when you are older?k&k&k&k&k&?

哈!我知道这可能对你没有帮助,但也许这将是朝着正确方向迈出的一步。顺便说一下,你可能想尝试使用Python 3+,它在unicode上要好得多。

答案 1 :(得分:0)

您不需要任何转换,默认情况下文件内容是unicode。只需删除str即可。所有字符串方法都适用于unicode,因此拆分就可以了。 如果您想要从某个对象中取出unicode,请尝试使用unicode代替str