Декодирование Python с ошибками = заменить

Используя Python 2.7, я беру некоторый HTML-код с веб-сайта в виде строк и сразу же декодирую его в Unicode. Поскольку позже мне нужно будет знать, где произошли какие-либо ошибки декодирования, я подумал, что лучше всего использовать errors="replace" для предотвращения исключений из-за символов, отличных от ASCII:

linkname = curlinkname.decode("utf-8", errors="replace")

В большинстве случаев это заменяет проблемный символ заполнителем. Однако, когда я запускаю код, я все еще получаю исключение из этой строки для одного конкретного символа (ū):

UnicodeEncodeError: 'charmap' codec can't encode character u'\u016b' in position 1: character maps to <undefined>

В чем дело?


person sssnakey    schedule 01.07.2015    source источник
comment
Возможно, кодировка не utf-8, сначала проверьте ее, вы можете использовать эту библиотеку для определения кодировки github.com/chardet /карта   -  person efirvida    schedule 01.07.2015
comment
Не могли бы вы поделиться полной трассировкой?   -  person Anand S Kumar    schedule 01.07.2015
comment
вы читаете из текстового файла?   -  person efirvida    schedule 01.07.2015


Ответы (1)


вам нужно сначала установить lib

pip install chardet

затем используйте его

import chardet
code = chardet.detect(curlinkname)
linkname = curlinkname.decode(code['encoding'], errors="replace")
person efirvida    schedule 01.07.2015