Unicode Python 2序号在联接时不在范围内
当我这样做的时候Unicode Python 2序号在联接时不在范围内,unicode,python-2.x,Unicode,Python 2.x,当我这样做的时候 u','.join([u'\u4e8c\u6797',unicode(10)]) 它因UnicodeEncodeError而失败:“ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围(128)。列表中的所有三项都是unicode类型 为什么它试图用ascii编码?我不想把它转换成ascii字符串。我如何避免它 信息确实不够,因为它可以正常工作: >>> u','.join([u'\u4e8c\u6797', unicode(10)]) u'\u
u','.join([u'\u4e8c\u6797',unicode(10)])
它因UnicodeEncodeError而失败:“ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围(128)。列表中的所有三项都是unicode类型
为什么它试图用ascii编码?我不想把它转换成ascii字符串。我如何避免它 信息确实不够,因为它可以正常工作:
>>> u','.join([u'\u4e8c\u6797', unicode(10)])
u'\u4e8c\u6797,10'
但我的水晶球说你想用某种方式打印它:
>>> print u','.join([u'\u4e8c\u6797', unicode(10)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\dev\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: character maps to <undefined>
必须告知文件编码,如UTF-8,否则默认为ASCII:
>>> import codecs
>>> with open('out.txt','w') as f:
... f.write(u','.join([u'\u4e8c\u6797', unicode(10)]).encode('utf8'))
...
>>> # SUCCESS!
对我有用。深入挖掘。哦,是的,我正试图打印它,或者写入文件。你的水晶球是正确的。事实上,我第一次遇到这个错误是在写入文件时。然后我试着把它打印出来看看有什么效果。我用编解码器模块打开文件(outputFileName,'w','utf-8')。而[u'\u4e8c\u6797',unicode(10)]是我所做工作的简化示例,而不是最初的问题。我只是注意到,这一个通过时,写入文件。让我再检查一下原来的箱子。
>>> import codecs
>>> with open('out.txt','w') as f:
... f.write(u','.join([u'\u4e8c\u6797', unicode(10)]).encode('utf8'))
...
>>> # SUCCESS!