Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Проблемы с кодировкой при выводе через Apache [RSS Feed]

#1 Март 10, 2011 07:33:53

reload
От:
Зарегистрирован: 2011-03-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

Имею:
Debian Linux 2.6.26-2-686
Python 3.1.3
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0

Для проверки работы питона написал простой скрипт index.py:

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

print ('Content-type: text/html; charset=UTF-8\n\n')
u = 'Привет!'
print (u)
При запуске в консоли все выводится нормально.

При попытке запуска через апач в логах апача выводится ошибка:

 Traceback (most recent call last):
File "/usr/local/www/adsl/index.py", line 29, in <module>
print (u)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
P.S. Извиняюсь за поднятие столь избитой темы с кодировками, но гугл не помог и на этом форуме я не смог найти ответ на этот вопрос.



Отредактировано (Март 10, 2011 07:58:47)

Офлайн

#2 Март 10, 2011 07:49:59

bigdick
От:
Зарегистрирован: 2011-03-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

А если в конфиг апача добавить
AddDefaultCharset UTF-8



Офлайн

#3 Март 10, 2011 07:57:09

reload
От:
Зарегистрирован: 2011-03-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

bigdick
А если в конфиг апача добавить
AddDefaultCharset UTF-8
Добавил вот так:

        <Directory /usr/local/www/adsl>
Options +ExecCGI
AddHandler cgi-script .py
AddDefaultCharset UTF-8
AllowOverride None
Order deny,allow
Deny from all
allow from 192.168.0.168
</Directory>
Появляется та же самая ошибка.



Отредактировано (Март 10, 2011 07:59:21)

Офлайн

#4 Март 10, 2011 08:01:11

bigdick
От:
Зарегистрирован: 2011-03-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

Офлайн

#5 Март 10, 2011 08:57:52

reload
От:
Зарегистрирован: 2011-03-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

Ничего дополнительного типа Django ставить не хотелось бы. А примеры в коментариях не помогают.



Офлайн

#6 Март 10, 2011 14:25:00

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

подключи через wsgi. он в питоне по дефолту есть.

Офлайн

#7 Март 10, 2011 15:23:14

victor_kr
От:
Зарегистрирован: 2011-03-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

А если так попробовать:

u = u'Привет!'



Офлайн

#8 Март 11, 2011 06:12:57

reload
От:
Зарегистрирован: 2011-03-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

victor_kr
А если так попробовать:

u = u'Привет!'
Уже пробовал. Результат:

   File "/usr/local/www/adsl/index.py", line 28
u = u'\\u041f\\u0440\\u0438\\u0432\\u0435\\u0442!'
^
SyntaxError: invalid syntax
Premature end of script headers: index.py



Офлайн

#9 Март 11, 2011 06:32:16

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

Это третий питон. Там по дефолту строки это уникод объекты. Попробуйте добавить перед строковым литералом символ b.

Ну и вообще конечно с внешним миром надо общаться в какой-то кодировке, поэтому все строки надо так или иначе кодировать.



Офлайн

#10 Март 11, 2011 08:12:53

reload
От:
Зарегистрирован: 2011-03-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой при выводе через Apache

Александр Кошелев
Это третий питон. Там по дефолту строки это уникод объекты. Попробуйте добавить перед строковым литералом символ b.
Добавил:
  File "/usr/local/www/adsl/index.py", line 28
u = b'\\u041f\\u0440\\u0438\\u0432\\u0435\\u0442!'
SyntaxError: bytes can only contain ASCII literal characters.
Premature end of script headers: index.py
Александр Кошелев
Ну и вообще конечно с внешним миром надо общаться в какой-то кодировке, поэтому все строки надо так или иначе кодировать.
А это можно пояснить?



Офлайн

  • Начало
  • » Web
  • » Проблемы с кодировкой при выводе через Apache[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version