我正在尝试读取一个包含“ë”字符的文件。问题是,无论我尝试如何处理编码,我都无法弄清楚如何阅读它。当我在 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 stream does not start with BOM" UnicodeError: UTF-16 stream does not start with BOM -- I know this one is that it is not a utf-16 file.
UnicodeDecodeError: 'ascii' codec can't decode byte 0x91 in position 0: ordinal not in range(128)
如果我不使用编解码器,该单词将以 Ae?tes
的形式出现,然后在程序中稍后崩溃。需要明确的是,建议的问题或网络上的任何其他问题都没有指出答案。另一个可能有帮助的细节是我使用的是 OS X,而不是 Windows。
最佳答案
这个答案要归功于 RadLexus 找出了正确的编码,也归功于疯狂物理学家,即使我没有考虑所有可能的编码,他也为我指明了正确的方向。
问题显然是 Mac 会将 .txt 文件转换为 mac_roman。如果您使用该编码,它将完美地工作。
这是我用来转换它的代码行。
readFile = codecs.open("FileName",encoding='mac_roman')
关于读取文件时Python编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415856/