вторник, 10 апреля 2012 г.

Python 2.x и русские строки

Локализованный Windows, зараза, выплёвывает локализованные результаты работы утилит.
Потратил два часа на то, чтобы найти вхождение строкового литерала в этом результате.
Постфактум - все элементарно, но матов успел сложить стопочку...

Итак - пометки на полях:

1) Чтобы объявить строковой литерал кириллицей надо указать кодировку файла, иначе питончик падает с синтаксической ошибкой: SyntaxError: Non-ASCII character '\xcf' in file
Лечится добавлением в заголовок следующих строчек:
#!/usr/bin/python
# -*- coding: utf-8 -*-


2) Для сравнения строк необходимо их привести к одной кодировке:
В случае строкового литерала делаем так:
cyrillic_literal = 'Печатаемое имя:'.decode('cp1251')

А для внешних данных:
line = line.decode(sys.stdin.encoding)

Комментариев нет:

Отправить комментарий