Изза чего проблема с русскими буквами в puthon 3.3?

Я только только начал изучение pythona и сразу наткнулся на проблему которую не могу решить самостоятельно.

Имеем код:
#!C:/OpenServer/modules/phyton/python.exe
# -*- coding: utf-8 -*-

print ("Content-Type: text/html; charset=utf-8\n")
print ("<html><head><title>And Now for Something Completely Different…</title></head><body>")
print ("<h1> Python  works!</h1>")
print ("<p>Hello Wordl!</p>")

print('Привет'.encode("utf-8"))

print ("<p>Привет МИР!</p>")
print ("</body></html>")


Установлен интерпретатор, операционная система Win7, вебсервер Apache из пакета Openserser, python подключен к серверу, код выполняется.

Но проблема с русскими буквами, они не отображаются.
Вот что выводиться в браузер
<html><head><title>And Now for Something Completely Different�</title></head><body>
<h1> Python  works!</h1>
<p>Hello Wordl!</p>
b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
b'<p>\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 \xd0\x9c\xd0\x98\xd0\xa0!</p>'
</body></html>


Файл сохранен в кодировке Utf-8 with BOM, редактор Sublime Text 3

Кто может подсказать как разобраться с кодировкой?
  • Вопрос задан
  • 2940 просмотров
Решения вопроса 1
qmax
@qmax
программер
Преобразование происходит из-за несоответствия кодировки stdout тому что вы туда пишете.
Проверьте sys.stdout.encoding. Если там что-нибудь левое или вобще пусто, попробуйте установить кодировку насильно:
import sys, codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())


Ну и скажите потом, как же это у вас так раскрячилось, что stdout так пишет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sevka_fedoroff
@sevka_fedoroff
Мне кажется если у вас в начале файла есть вот это:
# -*- coding: utf-8 -*-
и сам файл в кодировке UTF-8, то должен работать просто
print ("<p>Привет МИР!</p>")

Разве что в код HTML еще добавить такое:
<head><meta charset='UTF-8'>

P.S. И попробуйте убрать BOM
Ответ написан
zxmd
@zxmd
Попробуй так:

#coding=utf-8
print ("Content-Type: text/html; charset=utf-8\n")
print ("<html><head><title>And Now for Something Completely Different…</title></head><body>")
print (u"<p>Привет МИР!</p>")
Ответ написан
lightman
@lightman
Автор, попробуйте вывести без encode:
print('Привет')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы