Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Python - проблемы с кодировкой utf-8

#python #python_3x #apache #кодировка


Как заставить пайтон работать с кодировкой utf-8?

Генерируется файл file.pyc (или не генерируется, сам не понял) с win1251 заголовками
из utf file.py

Собственно исходный файл. Авось поможет.
Файл кодирован в utf-8 без BOM

#!/usr/bin/python
# -*- coding: utf-8 -*-
import string
import sys

print ('''Content-type: text/html''')
print ('''


Проверка Python


Русский текст - Nerusskii text
    ''') А в браузер я получаю страничку с хедерами Content-Type:text/html; charset=UTF-8 и содержимым. (Браузер смотрит в utf-8, а файл то win1251) �������� Python ������� ����� - Nerusskii text
      UP (Спустя много лет) Проблема таки оказалась в Apache. Решение нашлось туть AddDefaultCharset UTF-8 SetEnv PYTHONIOENCODING utf8


Ответы

Ответ 1



Попробуй добавить в шапку py ## -*- coding: utf-8 -*- И сохранить файл в utf-8.

Ответ 2



Собственно в какой программе пишется сам код? Вы пробовали проэксперементировать, например указать в заголовки кодировку как win1251. Так же возможно используемый шрифт в браузере ничего не знает о русских буквах в UTF (помню раньше в windows XP из за таких вот телодвижений, в прочим как и в Висте приходилось в системе жестко указывать шрифт, так как многие приложения не только не знали о русских но и о многих других языках.) Так же стоит попробовать жестко указать функции print о используемой кодировке для строки. Так же не совсем понятно куда выводит ваши сообщения функция print, возможно то что принимает вывод не знает о русских буквах. (когда "система" не знает о русских буквах и получает хотя бы букву в виде набора байт то разбивает ее на две (вспомните СМС, английскими символами написать вы можете больше чем русскими) и мы получаем 2 совершенно самостоятельных символа на выходе, а так как они существую, то естественно в дальнейшей обработке они и идут как 2 совершенно разных символа а не наша русская буква. хотя в вашем случае похоже это не совсем то, так как количество символов здесь не 2 раза больше, но думаю принцип вам понятен.)

Комментариев нет:

Отправить комментарий