在 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) [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果字符串在文本文件中,如何在 Python 中检查并打印该行?

Python Discord bot 在异常时发送文本

我如何只打印出消息而不是整个文本[重复]

打印出 ValueError 的实际错误消息

线程中的类型错误。函数接受 x 位置参数,但给出了 y

Pyspark:文件文本拆分后无法打印