Найти - Пользователи
Полная версия: Python 2.5 vs Python 2.6 на Windows и вывод русских букв
Начало » Python для экспертов » Python 2.5 vs Python 2.6 на Windows и вывод русских букв
1
bialix
Если кто-то знает почему так и может объяснить, то я буду премного благодарен.

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 'Тест'
'?бв
slav0nic
sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
я такое юзал, но что в разных версиях по разному - для меня загадка )
Carzil
У wind'ы часто проблемы с кодировкой…
pyuser
Carzil
У wind'ы часто проблемы с кодировкой…
просто системная кодировка и кодировка консоли - это разные вещи (cp1251 и cp866 соответственно)
bialix
Carzil
У wind'ы часто проблемы с кодировкой…
Проблемы с кодировкой у тех, кто не понимает как с wind'ы обращаться.
bialix
Вобщем вместе с одним парнем разобрались. Из-за того, что Python 2.6 на Windows скомпилирован при помощи VS2008, то 2.6 использует системные либы от 2008. Эта проблема идёт именно из системной либы msvcr90.dll. Если вызвать setlocale, то системная функция вывода на консоль (puts) начинает зачем-то перекодировать строки в ANSI кодировку. Вобщем питон тут почти что ни при чем.

Возможно, кому-то будет полезно это знать.
bialix
Вопрос закрыт.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB