Форум сайта python.su
Если кто-то знает почему так и может объяснить, то я буду премного благодарен.
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Тест'
Тест
>>> import locale
>>> locale.setlocale(locale.LC_ALL,"")
'Russian_Russia.1251'
>>> print 'Тест'
Тест
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Тест'
Тест
>>> import locale
>>> locale.setlocale(locale.LC_ALL,"")
'Russian_Russia.1251'
>>> print 'Тест'
'?бв
Офлайн
sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
Офлайн
У wind'ы часто проблемы с кодировкой…
Офлайн
Carzilпросто системная кодировка и кодировка консоли - это разные вещи (cp1251 и cp866 соответственно)
У wind'ы часто проблемы с кодировкой…
Офлайн
CarzilПроблемы с кодировкой у тех, кто не понимает как с wind'ы обращаться.
У wind'ы часто проблемы с кодировкой…
Офлайн
Вобщем вместе с одним парнем разобрались. Из-за того, что Python 2.6 на Windows скомпилирован при помощи VS2008, то 2.6 использует системные либы от 2008. Эта проблема идёт именно из системной либы msvcr90.dll. Если вызвать setlocale, то системная функция вывода на консоль (puts) начинает зачем-то перекодировать строки в ANSI кодировку. Вобщем питон тут почти что ни при чем.
Возможно, кому-то будет полезно это знать.
Офлайн
Вопрос закрыт.
Офлайн