У меня есть файл, который в основном UTF-8, но некоторые символы Windows-1252 также нашли там путь.
Я создал таблицу для сопоставления символов Windows-1252 (cp1252) с их юникодными аналогами и хотел бы использовать ее для исправления некодированных символов, например.
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)
Но попытка выполнить эту замену приводит к тому, что создается UnicodeDecodeError, например:
"\x85".replace("\x85", u'\u2026')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128)
Любые идеи о том, как справиться с этим?