Форум сайта python.su
ActivePython 2.5, WinXP SP2.
# -*- coding: cp1251 -*- print unicode('Привет','cp1251') raw_input(unicode('Привет','cp1251'))
Traceback (most recent call last):Можно ли raw_input использовать с русским языком?
File “C:\Temp\ttt.py”, line 3, in <module>
raw_input(unicode('¦ЁштхЄ','cp1251'))
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-5: ordinal not in range(128)
Отредактировано (Апрель 12, 2007 10:18:28)
Офлайн
raw_input ждет обычную строку(объект класса str), а не unicode.
raw_input(unicode('Привет','cp1251').encode('cp1251'))
Офлайн
Спасибо, сработало так:
# -*- coding: cp1251 -*- raw_input(unicode('Привет','cp1251').encode('cp866'))
Офлайн
Все правильно. В винде 2 кодировки. В гуи - cp1251, а в консоле cp866.
Офлайн
Никак не могу разобраться с выводом русского текста при исапользовании raw_input. Следующая программа работает в консоли:
# -*- coding: cp1251 -*-
from __future__ import division
from random import *
import re
def main():
while 1:
x = []
if raw_input(u"Ввести данные? (иначе будут использованы тестовые данные) - [y/n]:".encode("cp866")) == "y":
[<< кусок кода >>]
print u"Гипотеза о нормальном законе распределения выполняется? - ",endcond
if (raw_input(u"Продолжить работу с программой? - [y/n]:".encode("cp866")) == "n"): break
main()
Отредактировано (Ноя. 22, 2008 17:51:11)
Офлайн
# -*- coding: cp866 -*- ???
или сохранять в utf-8 и указать sys.setdefaultencoding('cp866')
Отредактировано (Ноя. 22, 2008 17:56:42)
Офлайн
Deutschmann
1. Удобнее всегда писать исходник в utf-8.
2. ActivePython: решение проблем с кодировками.
Офлайн
igor.kaistИероглифы получаются, пока спасает только encode.
Офлайн
Deutschmann
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf
raw_input(u'Привет')
Офлайн
The gray CardinalРаботает на сто процентов:
Deutschmannimport codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf
raw_input(u'Привет')
# -*- coding: cp1251 -*-
from __future__ import division
from random import *
import re
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf
def main():
while 1:
x = []
if raw_input(u"Ввести данные? (иначе будут использованы тестовые данные) - [y/n]:") == "y":
[<<кусок кода>>]
main()
Отредактировано (Ноя. 22, 2008 18:24:47)
Офлайн