Питонисты,
сколько раз вы наблюдали сообщения типа
UnicodeEncodeError: 'ascii' codec can't encode characters in position
пытаясь просто распечатать текст в
консоль, типа
print u"это строка в юникоде"
Если многократно, как я, то это значит,
что нынче нам можно вздохнуть с
облегчением. С версии 2.6 Python поддерживает
переменную среды
PYTHONIOENCODING
с помощью
которой можно задать не опостылевшую
ascii содировку по умолчанию, а ту, что
надо. Для линуксов это любезная UTF-8.
Короче, вот
код на Python (допустим, в файле test.py), который
вызывает ошибку, печатая Unicode в консоль:
#!/usr/bin/env python # -*- mode: python; coding: utf-8 -*- print u"это строка в юникоде"
Чтобы этот код отработал без ошибок,
примените сниппет из bash скрипта.
Скрипт для
запуска этого кода с установленной
правильной кодировкой ввода/вывода:
#!/usr/bin/env bash export PYTHONIOENCODING=UTF-8 python -u test.py
Бобер, выдыхай.
Больше не надо извратов с перекодировками
при выводе в консоль — достаточно
установить переменную и принять за
правило, что весь текст должен быть в
юникоде.
Комментариев нет:
Отправить комментарий