Уж сколько
времени прошло с начала массовой миграции
текстов в Unicode, а грабли по прежнему
попадаются.
Я вот, к примеру,
вчера полчаса убил на попытки понять,
почему не работает конструкция типа
такой
# -*- mode: python; coding: utf-8 -*- x = u'тут у нас плейсхолдер валяется' unistr = getUniDataFromOutThere() y = x.replace(u'плейсхолдер', unistr)
получая в рыло
отлуп типа такого
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
Долго я тупил,
думая — какой нафик аски кодек, когда
у меня все в Unicode? Пока не нашел в коде
получения данных место, где юникодная
строка зачем-то кодируется в UTF-8. То есть
в функцию replace второй параметр попадал
не в Unicode а в кодировке UTF-8.
Аккуратность
и еще раз аккуратность требуется. Зато
в процессе тупления нашелся прекрасный
материал про Unicode и Python
Комментариев нет:
Отправить комментарий