我无法显示theunicode项u'\u201d'。我在其他unicode项目上没有遇到问题。我使用了UTF-8,但是这个字符出现了,给我的代码带来了麻烦。我在解释器中尝试了不同的方法。但基本上是在哪里:
c = u'\u201d'我得到了这个错误:
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)我需要在GUI中显示它,这样我就可以检查输出,然后将其存储为纯文本。Transform unicode string in python解释了一点,但是我仍然明显遗漏了一些东西。
发布于 2012-09-23 02:56:12
如果你得到了这个异常,那么你正试图在unicode字符串上调用.decode()。您应该只对字节字符串调用.decode(),并且只对unicode字符串调用.encode()。否则,解释器将首先使用默认编解码器(通常为'ascii')对字符串进行隐式编码或解码,这是个坏消息。
总的来说,我建议仔细阅读http://farmdev.com/talks/unicode/ ...
发布于 2012-09-23 03:22:50
如果你读过The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),你就会知道没有纯文本这回事。
但是,由于你坚持的目标和人们试图解释的目标之间似乎没有达成共识,我开始怀疑,“将符号转换为纯文本”是不是指“将Unicode右双引号(U+201D)替换为引号(U+0022),然后编码为ASCII码”。例如,如下所示:
In [45]: s = u"“curly quoted”"
In [46]: s
Out[46]: u'\u201ccurly quoted\u201d'
In [47]: print s
“curly quoted”然后手动进行替换(搜索"unicode string sanitize“,你会发现更好的方法,包括对不同字符的更多”降级“):
In [51]: fixer = dict.fromkeys([0x201c, 0x201d], u'"')
In [52]: s.translate(fixer)
Out[52]: u'"curly quoted"'
In [53]: s.translate(fixer).encode("ascii", "replace")
Out[53]: '"curly quoted"' 其中的“替换”将保护我们没有修复的任何东西。
https://stackoverflow.com/questions/12546705
复制相似问题