如何解决Unicode错误序数不在范围内
你已经有一个unicode字符串,就没有必要将其解码为unicode字符串 再次 。
在这种情况下,发生的情况是python会帮助您首先尝试为您 进行编码
,以便您可以从进行解码utf-32@H_502_8@。它使用默认编码进行编码,恰好是ASCII。这是一个显式编码,向您显示在这种情况下引发的异常:
>>> u'\u201d'.encode('ASCII')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201d' in position 0: ordinal not in range(128)
@H_502_8@
简而言之,当您拥有Unicode文字如时u''@H_502_8@,就无需对其进行解码。
阅读Python Unicode HOWTO中的unicode,编码和默认设置。关于该主题的另一篇非常有价值的文章是Joel Spolsky的Minimun Unicode知识文章。
解决方法
unicode对我来说很奇怪。我当时处理的是unicode很好,但是今天早上运行它时,u’\ u201d’一项出现错误并给了我
UnicodeError: ASCII encoding error: ordinal not in range(128)
我查找了代码,显然是它的utf-32,但是当我尝试在解释器中对其进行解码时:
c = u'\u201d'
c.decode('utf-32','replace')
或与此相关的任何其他操作,它只是无法在任何编解码器中识别它,但我发现它是“正确的双引号”
我得到:
Traceback (most recent call last):
File "<pyshell#154>",line 1,in <module>
c.decode('utf-32')
File "C:\Python27\lib\encodings\utf_32.py",line 11,in decode
return codecs.utf_32_decode(input,errors,True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201d' in position 0: ordinal not in range(128)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。