Вопрос про юникод в Python2.
Насколько я знаю об этом, я всегда должен decode
все, что я читаю извне (файлы, сеть). decode
преобразует внешние байты во внутренние строки Python, используя кодировку, указанную в параметрах. Таким образом, decode("utf8")
означает, что внешние байты представляют собой строку юникода, и они будут декодированы в строки python.
Также я всегда должен encode
все, что я пишу снаружи. Я указываю кодировку в параметрах функции encode
и она конвертирует в правильную кодировку и записывает.
Эти утверждения верны, не так ли?
Но иногда, когда я разбираю html-документы, я получаю ошибки декодирования. Насколько я понимаю, документ в другой кодировке (например cp1252
) и ошибка возникает, когда я пытаюсь декодировать это с помощью кодировки utf8. Так что вопрос в том, как написать пуленепробиваемое приложение?
Я обнаружил, что есть хорошая библиотека для угадывания кодировки chardet, и это единственный способ написать пуленепробиваемый Приложения. Верно?