Въпросът за unicode в Python2.
Тъй като знам за това, винаги трябва да decode
всичко, което чета отвън (файлове, мрежа). decode
преобразува външните байтове във вътрешни низове на Python, използвайки набор от знаци, посочен в параметрите. Така че decode("utf8")
означава, че външните байтове са уникод низ и те ще бъдат декодирани до низове на Python.
Също така винаги трябва да encode
всичко, което пиша навън. Посочвам кодиране в параметрите на функцията encode
и тя се преобразува в правилно кодиране и записва.
Тези твърдения са верни, нали?
Но понякога, когато анализирам html документи, получавам грешки при декодиране. Доколкото разбирам, документът е в друго кодиране (например cp1252
) и възниква грешка, когато се опитам да декодирам това с помощта на кодиране utf8. Така че въпросът е как да напишем бронирано приложение?
Открих, че има добра библиотека, за да се предположи, че кодирането е chardet и това е единственият начин да се пише бронирано приложения. нали