【发布时间】:2017-06-20 12:31:45
【问题描述】:
我正在尝试从 python 脚本中读取一个日志文件。我的程序在 Linux 中运行良好,但在 Windows 中出现错误。在读取特定行号的某些行后,我收到以下错误
File "C:\Python\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 311: char
acter maps to <undefined>
以下是我用来读取文件的代码
with open(log_file, 'r') as log_file_fh:
for line in log_file_fh:
print(line)
我尝试通过使用 ascii、utf8、utf-8、ISO-8859-1、cp1252、cp850 等不同的编码模式来修复它。 但仍然面临同样的问题。 有什么办法可以解决这个问题。
【问题讨论】:
-
文件的编码是什么是?
-
我不知道文件的编码。但我认为它的 ANSI 我已经看到了找出文件编码的一种方法是在记事本中打开文件并使用保存,因为我看到了 ANSI。
-
我使用下面的链接找到了编码它的显示编码为西方codeftw.blogspot.in/2009/07/…
-
所谓的ANSI编码是Windows-1252又名CP-1252。该错误消息表明您的 Windows 系统使用 CP-1252 作为默认编码,但您正在读取的文件 not CP-1252,因此无法将其解码为 Unicode。您需要指定文件的实际编码。在 Python 3 中,最简单的方法是在
open调用中将编码作为参数传递。试试with open(log_file, 'r', encoding="utf-8") as log_file_fh:,让我们知道会发生什么。 -
顺便说一句,对于 Unicode 问题,您应该总是提及您正在使用的 Python 版本(最好包含适当的标签),因为 Python 3 处理 Unicode 与 Python 2 完全不同。
标签: python python-3.x unicode