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)

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

Спасибо.

★★★★★

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

> print r"Привет", не?

Не.


print r"\u043f\u0440\u0438\u0432\u0435\u0442"
                        ^
SyntaxError: invalid syntax


blackst0ne ★★★★★
() автор топика
Ответ на: комментарий от anonymous4

> Почему cgi? Это ж прошлый век.

А что сегодня используют?

> Попробуй print(b"Привет")


SyntaxError: bytes can only contain ASCII literal characters.

blackst0ne ★★★★★
() автор топика

u"Привет"

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

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

dimon555 ★★★★★
()

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

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

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

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

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

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


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



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

blackst0ne ★★★★★
() автор топика

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

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