Форум сайта python.su
Здравствуйте! Помогите пожалуйста со следующей проблемой. Вопрос из тестового задания.
В приведенном примере:
$cat test.py
# -*- coding: utf8 -*-
s = u"ы"
print "Hello, %s" %s
$python test.py > /dev/null
Traceback (most recent call last):
File "task1.py", line 5, in <module>
print "Hello, %s" %s
UnicodeEncodeError: 'ascii' codec can't encode character u'\u044b' in position 7: ordinal not in range(128)
Офлайн
# -*- coding: utf8 -*- s = u"ы" print u"Hello, %s" %s
Отредактировано doza_and (Апрель 2, 2016 12:49:29)
Офлайн
По-прежнему ошибка происходит
Офлайн
Сам файл в utf8 сохранён?
Офлайн
Да
Офлайн
А почему ругается на 5 строку когда у вас их 4? А без dev null что будет?
Офлайн
последняя строка случайно сместилась на одну вверх когда на форум заливал, без dev null работает нормально, но нужно, чтобы именно с dev null отрабатывало
Офлайн
Это надо наверное либо изменить настройки локали. Ваш dev null не может воспроизвести unicode либо перед печатью попробовать провести явную кодировку(encode()).
Офлайн
megolomanПопробуйте так:
Как исправить код test.py что-бы не было ошибки?
# -*- coding: utf-8 -*- s = u"ы".encode("utf-8") print ("Hello, %s" %s)
Офлайн
john_16@linux-home:~> cat t.py # -*- coding: utf-8 -*- print u'Привет' john_16@linux-home:~> python2 t.py Привет john_16@linux-home:~> python2 t.py > /dev/null Traceback (most recent call last): File "t.py", line 3, in <module> print u'Привет' UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128) john_16@linux-home:~> export PYTHONIOENCODING=UTF8 john_16@linux-home:~> python2 t.py > /dev/null
Офлайн