LINUX.ORG.RU

Python: как принудить к utf-8?


0

0

Python3

Apache2 (cgi)

#! /usr/bin/python3
# -*- coding: utf-8 -*-

print("Content-type: text/html\n\n")

print("Привет")

Результат:

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

Как заставить эту змею работать вменяемо? Перекодировать каждую строку не предлагать.

Спасибо.

Re: Python: как принудить к utf-8?

u"Привет"

или "Привет".decode('utf-8')

что-то в этом духе

dimon555 ★★★★★ ()

Re: Python: как принудить к utf-8?

Короче, тебе надо указать кодировку stdout.

Погугли, эта проблема не так просто решается и встречается достаточно часто. По сути это баг в io-модуле и его, вполне возможно, профиксили в 3.1, поэтому попробуй обновиться. Для старых питонов решение достаточно костыльное, один из вариантов: http://mail.python.org/pipermail/python-3000/2008-February/012144.html

А вот кодировку документа можешь не указывать для py3k, она должна быть всегда utf8.

true_admin ★★★★★ ()
Ответ на: Re: Python: как принудить к utf-8? от true_admin

Re: Python: как принудить к utf-8?

> Короче, тебе надо указать кодировку stdout.

> Погугли, эта проблема не так просто решается и встречается достаточно часто. По сути это баг в io-модуле и его, вполне возможно, профиксили в 3.1, поэтому попробуй обновиться. Для старых питонов решение достаточно костыльное, один из вариантов: http://mail.python.org/pipermail/python-3000/2008-February/012144.html


> А вот кодировку документа можешь не указывать для py3k, она должна быть всегда utf8.



Спасибо тебе, добрый человек. Заработало, пусть и через гланды. =)

blackst0ne ★★★★★ ()

Re: Python: как принудить к utf-8?

Да, под DOS/Windows требовалось перекодировать в кодировку командной строки, или ту кодировку, куда печатаешь текст, чтобы не было Exceptions.

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