Olej писал(а):
Теперь перепишу тестовое приложение (loc2w-1251.py):
Код: Выделить всё
#!/usr/bin/python
# -*- coding: cp1251 -*-
print "вывод русскоязычной строки, набранной в UTF-8"
И как изменилось
его выполнение:
Код: Выделить всё
>>> ================================ RESTART ================================
>>>
вывод русскоязычной строки, набранной в UTF-8
>>>
Вот тут я вас обманул
Или это Windows (долбанный!
) меня обманул ... где-то при сохранении файла .py он (IDLE написанный под него?) умудрился подменить кодировку строки в коде программы .py на свою незабвенную 1251 (в соответствии с тем, что записано в комментарии coding). И при переносе файлов обратно в Linux - там выявился маразм! Выправил в Linux всё на UTF-8, отнёс в Windows, и вот вам результат:
- вот как выглядит файл loc2w-1251.py в редакторе IDLE
Код: Выделить всё
#!/usr/bin/python
# -*- coding: cp1251 -*-
print "вывод русскоязычной строки, набранной в UTF-8"
- а вот другой, но с точно таким же
содержимым print() файл loc2w-utf8.py
Код: Выделить всё
#!/usr/bin/python
# -*- coding: utf-8 -*-
print "вывод русскоязычной строки, набранной в UTF-8"
Но он только отображается так, потому, что IDLE знает и использует coding
Но
исполняются они
одинаково маразматически (это в IDLE):
Код: Выделить всё
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
вывод русскоязычной строки, набранной в UTF-8
>>>
А это в отдельной текстовой консоли (Total Commander):
Код: Выделить всё
C:\Python-test\locale>loc2w-1251.py
╨▓╤Л╨▓╨╛╨┤ ╤А╤Г╤Б╤Б╨║╨╛╤П╨╖╤Л╤З╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕, ╨╜╨░╨▒╤А╨░╨╜╨╜╨╛╨╣ ╨▓ UTF-8
Вот так вот плохо с консольной локализацией в Python 2 (т.е. в Python 2, в котором всё рассчитано на UTF-8, всё не так уже и плохо - плохо, когда он попадает в среду Windows!).