我有一个主要是UTF-8的文件,但是一些Windows-1252字符也已经找到了.
我创建了一个表,从Windows-1252(cp1252)字符映射到它们的Unicode对应物,并希望用它来修复错误编码的字符,例如
cp1252_to_unicode = {
"\x85": u'\u2026', # …
"\x91": u'\u2018', # ‘
"\x92": u'\u2019', # ’
"\x93": u'\u201c', # “
"\x94": u'\u201d', # ”
"\x97": u'\u2014' # —
}
for l in open('file.txt'):
for c, u in cp1252_to_unicode.items():
l = l.replace(c, u)
Run Code Online (Sandbox Code Playgroud)
但尝试以这种方式替换会导致引发UnicodeDecodeError,例如:
"\x85".replace("\x85", u'\u2026')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
有关如何处理这个问题的任何想法?