在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]
Posted
技术标签:
【中文标题】在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]【英文标题】:Printing out text file in python gives error message - charmap_decode(input,errors,decoding_table) [duplicate] 【发布时间】:2014-03-12 10:00:27 【问题描述】:我在 gui 窗口中使用 wxpython 打印出 python 中的文本文件的内容,但得到错误消息:
return _core_.TextEntryBase_WriteText(*args, **kwargs)
File "C:\Python27\lib\encodings\cp1252.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 60: character maps to <undefined>
这是文本文件中的行:
<block count="55770" name="BASIC_LATIN">
!"%'(),-.0123456789:?ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyz</block>
<block count="2" name="LATIN_1_SUPPLEMENT">éï</block>
请告诉我如何解决这个问题?
【问题讨论】:
另见:***.com/questions/3284827/… 如何在lines = infile.readlines()中使用utf-8 你应该在适当的模式下open()
,比如infile = open('test.txt', encoding='latin-1')
。如果您评论中的infile
是一个文件对象,您已经打开了该文件。
【参考方案1】:
在他们的 wiki 页面上有大量关于 wxPython 和 unicode 的信息:
http://wiki.wxpython.org/UnicodeBuild我总是使用 wxPython 的 unicode 构建。我认为较新版本的 wx 可能只有 unicode 版本。无论如何,正如 joaquin 指出的那样,您还需要使用正确的编码打开文件。 Python 无法猜测文件编码的 unicode 版本。如果您不关心保留 unicode,有一个名为 Unidecode 的方便模块,我发现它对于将 unicode 转换为 ASCII 很有用。
【讨论】:
以上是关于在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]的主要内容,如果未能解决你的问题,请参考以下文章