Как из строки, которая содержит символ, не зная кодировку этого символа, как я могу показать полную строку, избегая ошибок? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть много строк, извлеченных из базы данных, которые содержат некоторые символы, которые мне нужно показать, например, € (я использую python 2.7). но проблема в том, что появилась следующая ошибка:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 33: invalid start byte 

Строка в этом случае является чем-то вроде st = ‘ the price in €’, но это может быть другой символ (сейчас ошибка появляется только в этом случае, но в будущем другой символ может вызвать у меня эту проблему)

Я справился с этой ошибкой, используя:

st = st.decode('utf8', errors='ignore')

Проблема с этим решением состоит в том, что он удаляет символ €, но я хочу показать этот символ. Я попытался использовать repr(st), чтобы найти кодировку, и это дало мне ‘\x80’.

Я хочу найти способ, которым я могу напечатать этот символ €, но без особого поиска этого символа (потому что это может быть другой символ) и избежать такой ошибки.

Я не знаю, есть ли другой способ увидеть проблему, потому что мой подход состоял в том, чтобы попытаться найти кодировку этого символа и попытаться преобразовать в обычную строку, но я обнаружил, что ошибка также появляется, пытаясь закодировать в 'latin1', 'utf-8' или 'ascii'. Может быть, моя проблема в том, что у меня нет никакого опыта в кодировании, я просто нуб.

1 Ответ

0 голосов
/ 05 июня 2019

Попробуйте библиотека Chardet

Эта библиотека может определять кодирование строк. Но это не может гарантировать точность на 100%, потому что это невозможно, по крайней мере, на данный момент. Вы можете прочитать их документы для подробного объяснения. Надеюсь, это решит вашу проблему.

...