【问题标题】:Python encoding issue while reading a file读取文件时的Python编码问题
【发布时间】:2016-09-09 16:21:09
【问题描述】:

我正在尝试读取包含此字符“ë”的文件。问题是,无论我尝试使用编码做什么,我都无法弄清楚如何阅读它。当我在 textedit 中手动查看文件时,它被列为未知的 8 位文件。如果我尝试将其更改为 utf-8、utf-16 或其他任何内容,它要么不起作用,要么会弄乱整个文件。我尝试仅在标准 python 命令以及使用编解码器中读取该文件,但无法提出任何可以正确读取它的内容。我将在下面包含一个代码示例。有谁知道我做错了什么?顺便说一下,这是 Python 2.17.10。

readFile = codecs.open("FileName",encoding='utf-8')

我要阅读的那一行是这一行,里面没有其他内容。

Aeëtes

这是我得到的一些错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x91 in position 0: invalid start byte

UTF-16 流不以 BOM 开头” UnicodeError: UTF-16 stream does not start with BOM -- 我知道这是不是 utf-16 文件。

UnicodeDecodeError:“ascii”编解码器无法解码位置 0 中的字节 0x91:序数不在范围内 (128)

如果我不使用编解码器,则该词以Ae?tes 出现,随后在程序中崩溃。为了清楚起见,建议的问题或网络上的任何其他问题都没有指向答案。另一个可能有帮助的细节是我使用的是 OS X,而不是 Windows。

【问题讨论】:

  • 请提供一些错误或意外结果。还有"utf-8-sig" 编码可能会有所帮助。
  • 文件写在哪里?是不是在使用一些奇怪编码的环境中,比如 Windows 遗留代码页?在此处查看类似问题:stackoverflow.com/q/6344853/2988730
  • 您是否尝试过构建一个可能的编码列表并循环遍历它们直到一个可行?
  • 所以我搜索了0x91 代表字符ë 的编码。至于你的“还有一件事”说明:想象一下,当Mac Roman Encoding 出现这种情况时,我会感到惊讶。

标签: python python-2.7


【解决方案1】:

这个答案的功劳归功于 RadLexus 找出了正确的编码,也归功于 Mad Physicist,即使我没有考虑所有可能的编码,他也为我指出了正确的轨道。

问题显然是 Mac 会将 .txt 文件转换为 mac_roman。如果您使用该编码,它将完美地工作。

这是我用来转换它的那行代码。

readFile = codecs.open("FileName",encoding='mac_roman')

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2018-07-16
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多