Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2012 16:29:50

keder
Зарегистрирован: 2012-11-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение формы с помощью POST

Доброго времени суток!
Возможно проблема и выеденого яйца не стоит, но долгое гугление ничего не дало.
Имеется простенькая форма:

<!DOCTYPE html>
<html>
<head>
<title>FORM</title>
<meta charset="utf-8">
</head>
<body>
<form name="form1" action="script.wsgi" method="POST" accept-charset="utf-8">
<input type="text" name="text1" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
Имеется простенький python скрипт использующий wsgi:
def application(environ, start_response):
status = '200 OK'
output = '<p>Form Sent!</p><br /><a href="javascript:history.go(-1)">Go Back</a>'

response_headers = [('Content-type', 'html'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
input_string = environ['wsgi.input'].read()
f = open('/home/dadmin/www/test-site/test.txt', 'w')
f.write(input_string)

return [output]
Который соответственно получает отправленную с помощью post форму и пишет её в файл.
Если в поле формы написать к примеру “александр”, в файл test.txt на сервере записывается следующее:
text1=%E0%EB%E5%EA%F1%E0%ED%E4%F0
Пробовал использовать enquote из urllib но получается следующее:
text1=àëåêñàíäð
Гугление модуля который бы мог преобразовать эти коды в кириллические символы ничего не дало. Есть ли какое-то стандартное решение?
Использовал:
python 2.6.6 и 3.1.3
apache 2.2.16
wsgi 3.3

Отредактировано keder (Ноя. 18, 2012 16:39:56)

Офлайн

#2 Ноя. 18, 2012 20:45:50

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Получение формы с помощью POST

Это строка в кодировке cp1251

>>> import urllib
>>> print urllib.unquote('%E0%EB%E5%EA%F1%E0%ED%E4%F0').decode('cp1251')
александр
хотя должна быть utf-8.

Офлайн

#3 Ноя. 19, 2012 07:22:42

keder
Зарегистрирован: 2012-11-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение формы с помощью POST

Спасибо, буду копать тогда в этом направлении. Я пробовал использовать decode, но только для utf-8, так как полагал что оно передается в ней - безрезультатно естественно.

Офлайн

#4 Ноя. 20, 2012 09:45:34

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

Получение формы с помощью POST

Это строка в кодировке cp1251

Нужно смотреть какой charset в шапке запроса http от сервера и к серверу.
Возможно сервер выставил cp1251 как допустимый, и клиент его использует.

Офлайн

#5 Дек. 6, 2012 10:04:09

Doberman26rus
От: Ставрополь
Зарегистрирован: 2009-03-16
Сообщения: 128
Репутация: +  1  -
Профиль   Отправить e-mail  

Получение формы с помощью POST

Апач на какой операционке крутится?



подпись

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version