Решено: [Решено] Python3, apache2 - не отображает надписи на русском

Модератор: Модераторы разделов

Аватара пользователя
blackst0ne
Сообщения: 528
Статус:
ОС: Ubuntu 9.04

Решено: [Решено] Python3, apache2 - не отображает надписи на русском

Сообщение blackst0ne »

Целый день не могу решить проблему.

Есть некий файлик index.py:

Код: Выделить всё

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

print("Content-type: text/html\n\n")
print("Привет")

Если его запустить в консоли, то он выполнится так, как и ожидаю. Но если его запустить через браузер (apache2, cgi), то в логах апача появляется такая строка:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

В браузере же приветствия нет.

Если поменять print("Привет") на print("Hello"), то всё работает хорошо. В браузере появляется надпись Hello.


Как научить питон писать в браузер по-русски?
Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
Спасибо сказали:
Аватара пользователя
blackst0ne
Сообщения: 528
Статус:
ОС: Ubuntu 9.04

Re: Решено: [Решено] Python3, apache2 - не отображает надписи на русском

Сообщение blackst0ne »

Проблему решил. Прикладываю решение для будущих поколений или блуждающих гугловодов.

Код: Выделить всё

#! /usr/bin/python3
import sys
sys.stdout._encoding = 'utf-8'

print("Content-type: text/html\n\n")
print('<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>')
print("привет")
print('</html>')


Это костыль, конечно, но сойдёт и такое решение на данный момент, пока питон не научится нормально выводить в нужной кодировке.
Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
Спасибо сказали: