LINUX.ORG.RU

python && utf-8


0

0

скрипт на Python'е в stdout выводит utf8 строки.

Когда печатает на экран все хорошо, но когда делаешь

./test.py > res

он пишет

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

Как решить эту проблему?

anonymous

Ответ на: комментарий от watashiwa_daredeska

ну, строки читаются из xml файла, в xml файле они в utf-8.

локаль у меня ru_RU.UTF-8, и все что печатается на экран печатается в utf-8.

какое они внутри имеют представление я не знаю.

anonymous
()
Ответ на: комментарий от anonymous

Судя по всему, внутреннее представление получается unicode. Автоматическая перекодировка делается только на tty, поэтому надёжнее делать перекодировку руками:

enc = locale.getpreferredencoding()
print u.encode( enc, "replace" )

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от Zert

> добавь в начало после #!/usr/bin/python такую строчку:

бред

anonymous
()
Ответ на: комментарий от watashiwa_daredeska

> Это влияет только на интерпретацию строковых констант в исходниках.

Ну хз, мож из-за этого траблы

Zert
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.