Форум сайта python.su
Доброго времени суток всем!
Борюсь с этой проблемой уже пару дней… А проблема, собственно, в следующем:
Когда я просто вывожу на консоль текст на русском языке, все отображается в консоли корректно:
In [2]: print 'ывыв' ывыв
In [3]: str = 'роман' In [4]: for chr in str: ...: print chr ...: � � � � �
# -*- coding: utf-8 -*- import sys import locale reload(sys) sys.setdefaultencoding(locale.getpreferredencoding())
# -*- coding: utf-8 -*- import sys import locale reload(sys) sys.setdefaultencoding(locale.getpreferredencoding()) print sys.getdefaultencoding() print locale.getpreferredencoding() print sys.stdout.encoding def translit(someText): charList = [] for char in someText: charList.append(char) print char translit('питон')
c0rsair@c0rsair-VirtualBox:~/Documents$ python test1.py
UTF-8
UTF-8
UTF-8
�
�
�
�
�
Офлайн
вот так попробуйте:
# -*- coding: utf-8 -*- mystr = u"роман" for char in mystr: print char
Офлайн
smoke853
вот так попробуйте:
str = u"роман" foo(str)
str=sys.argv[1] foo(str)
str=unicode(sys.argv[1]) foo(str)
Офлайн
Простите, если глупый вопрос… Недавно начал учить питон.. А в Java с таким не сталкивался…
Офлайн
corsair, рекомендую почитать Марк Лутц: “Изучаем Python, 4-е издание”. Конкретно про работу со строками во второй ветке пайтона. Многие вопросы сразу отпадут, я же могу не правильно объяснить
P.S. Ну вообщем в python 2 есть строки (str, только 8 битные символы), например: mystr = “hello”, а есть Юникодные строки(unicode), например: mystr = u“привет” или mystr = unicode(“привет”, encoding=“utf-8”) Я лично использую в основном python 3.3.0, т.е. 3-я ветка пайтона, вот в 3-й ветке не обязательно ставить префикс u, т.к. уже все строки интерпретируются как строки Юникода.
P.S.S. также не рекомендую использовать зарезервированные слова в названиях переменных, в вашем случае str = “…”, str - это зарезервированное слово.
Отредактировано smoke853 (Янв. 5, 2013 14:59:50)
Офлайн
smoke853, спасибо за совет! Слышал, что между второй и третьей веткой есть существенные отличия… И многие пока не рискуют использовать 3-ю в продакшене… возможно из-за какой-то несовместимости.. но в деталях мне это не известно.. Поэтому и взялся за изучение 2-ой… А Вы как думаете?
Офлайн
corsair, я сам только начал учить python где то с октября месяца 12-го года. До этого даже вообще не знал что такое ЯП, у нас не в технаре не в универе на информатике почему то этого не проходили. А так я поспрашивал с какой ветки начать изучать пайтон новичку, мне посоветовали с 3-й, т.к. пока я хорошо разберусь в python, 3-я ветка уже будет актуальна. Хотя например, я пользуюсь программами Autodesk Maya, The Foundry Nuke, там python 2-я ветка, так что пришлось и про 2 и про 3-ю ветки пайтона читать. Ну упор делаю все же на 3-ю А так различия между ветками не большие, ну на мой взгляд.
Офлайн