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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.