У меня есть много строк, извлеченных из базы данных, которые содержат некоторые символы, которые мне нужно показать, например, € (я использую 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'. Может быть, моя проблема в том, что у меня нет никакого опыта в кодировании, я просто нуб.