Python读取cp1252文件

问题描述

我正在尝试根据Sublime Text3读取应该是cp1252的文件,并且出现UnicodeEncodeError。

with codecs.open(config_path,mode='rb',encoding='cp1252') as f:
        lines = f.readlines()

UnicodeEncodeError: 'charmap' codec can't encode character '\x92' in position 15: character maps to <undefined>

如果我将编码更改为latin-1,我会读取文件,这有点奇怪...我对编码/解码工作还相当陌生,如果我在notepad ++ / ST3 / excel中打开文件,那只是对于我来说,二进制数据看起来像是一个难以理解的清单。

with codecs.open(config_path,mode='r',encoding='latin-1') as f:
    lines = f.readlines()

    for l in lines:
       utf_line = l.encode("utf-8")

print(utf_line)
b"\x00\x03'\xc2\x9a\x00\x03'\xc2\x9a\x00\x03&\xc3\xba\x00\x03'\xc3\x9a\x00\x03'?\x00\x03'\xc2\xbd\x00\x03't\x00\x03'\xc2\xb2\x00\x03'\xc3\xac\x00\x03'\xc3\x9b\x00\x03'1\x00\x03'\xc2\x98\x00\x03'M\x00\x03'o\x00\x03'\xc3\x8b\x00\x03'\xc2\xbf\x00\x03'd\x00\x03'\xc2\xbf\x00\x03'\xc3\xb0\x00\x03'1\x00\x03'\xc2\x9f\x00\x03'\xc2\x9f\x00\x03'V\x00\x03'\xc2\xa0\x00\x03'G\x00\x03'\x15\x00\x03'u\x00\x03'\xc2\xae\x00\x03'`\x00\x03'|\x00\x03'\x17\x00\x03'Q\x00\x03'8\x00\x03'\xc2\x94\x00\x03':\x00\x03'4\x00\x03'P\x00\x03'\xc2\x9d\x00\x03'\xc2\x9f\x00\x03''\x00\x03'\xc3\x92\x00\x03't\x00\x03'\xc3\xb3\x00\x03'l\x00\x03'c\x00\x03'2\x00\x03'i\x00\x03'C\x00\x03'=\x00\x03'\x0f\x00\x03'\xc3\x89\x00\x03'\xc3\x8a\x00\x03'\xc2\xb7\x00\x03'`\x00\x03'T\x00\x03'\xc2\x90\x00\x03'\xc3\x9b\x00\x03'\xc2\x90\x00\x03'y\x00\x03'?\x00\x03'\xc2\x92\x00\x03'\xc3\xad\x00\x03'g\x00\x03'\xc2\x84\x00\x03'@\x00\x03'\xc2\xa9\x00\x03'q\x00\x03'L\x00\x03'\xc2\xae\x00\x03'

这里是file

根据建议,我尝试按以下方式使用chardet:

with open(config_path,mode='rb') as f:
    lines = f.read()
    encoding = chardet.detect(lines)
    print(encoding)
{'encoding': None,'confidence': 0.0,'language': None}

如果我测试每一行,我都会得到一堆编码:cp1252,cp1253,ascii ...

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)