这是在写入大量文本到文件或标准输出的过程中,今天让我发疯的东西。我经常会收到有关错误字符的错误消息。这里有一个简化的测试用例:Python 3.x:确保字符串已准备好打印
Python 3.4.0b2 (v3.4.0b2:ba32913eb13e, Jan 5 2014, 16:13:26) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x='\x92'
>>> print(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\Lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x92' in position 0: character maps to <undefined>
我有一大块文字。我想打印全部或保存到文件,但没有得到这个错误。可能吗?我最喜欢的解决方案是保存这个烦人的字符(还有更多?),但如果有一个很好的方法来过滤它,那也会很好(我知道如何过滤单个字符,但我不知道知道'\x92'
是否有一堆类似的字符,它也需要被过滤掉。)
上面的代码片段在Python 3.3.3中没有返回错误。也许这是一个配置问题或Python中的错误3.4.0 –
@StefanoSanfilippo:你的控制台是否设置为CP437? –
@ IgnacioVazquez-Abrams不,我的控制台设置为UTF8。问题可能在那里。 –