第一个技巧是不要使用各种未说明的编码疯狂地打印到所有可能的输出机制。找出你有什么。做这个:
print repr(the_line_with_the_problem) # Python 2.x
print(ascii(the_line_with_the_problem)) # Python 3.x
并编辑您的问题并复制/粘贴结果。
第二个提示:寻求帮助时,请提供有关您的环境的信息:
什么版本的 Python?什么版本的什么操作系统?
还显示与语言环境相关的信息;以下示例来自我在 Windows 7 命令提示符窗口中运行 Python 2.7 的计算机:
>>> import sys, locale
>>> sys.getdefaultencoding()
'ascii'
>>> sys.stdout.encoding
'cp850'
>>> locale.getdefaultlocale()
('en_AU', 'cp1252')
>>>
第三个提示:不要使用自己的行话……“Simile Exhibit”、“printed to the command line”和“compile statement”这些概念需要解释。
的相关性是"\255"
什么?你从哪里得到那个的?
等待一些事实出现时的疯狂猜测:
(1) 违规字符是 U+00A0 NO-BREAK SPACE aka NBSP,它出现在您的文本中"\xA0"
,当使用命令提示符窗口发送到 Windows 上西欧语言环境中的标准输出时,将被视为已编码cp850
,因此显示为a-急性的。这怎么可能变成o-grave是一个谜。
(2) "\255"
==\xAD
暗示违规字符是 U+00AD SOFT HYPHEN 但为什么这会被视为 o-grave 是一个谜,它不是“空白”;它根本不应该显示,它应该显示为连字符/减号,而不是空格。