Форум сайта python.su
Здравствуйте, Всем.
У меня возникла такая проблема.
Я питон ещё только изучаю и вот решил для себя написать небольшую ЦМСку для сайта, всё вроде бы хорошо, но вот впал в ступор с кодировками.
Использую python 3.0.
Отправляю данные с русскими буквами через форму.
На входе примерно такой код.
import cgi
mPost = cgi.FieldStorage()
if 'code' in mPost:
print(mPost['code'].value)
Отредактировано (Май 27, 2009 15:41:53)
Офлайн
Смог решить вопрос самостоятельно -)
Тема закрыта.
Офлайн
kvazarТак напишите как!:-)
Смог решить вопрос самостоятельно -)
Офлайн
Да всё оказалось достаточно просто -)
Всё дело в моей неграмотности.
Я для себя это решил путём написания небольшой функции.
Написал так, чтобы в какой кодировке print() выводит, то в такую же кодировку и декодируется входящий поток и потом кодируется в юникод.
Странно, что разработчики по умолчанию так не сделали, указав utf-8 по дефолту…
#
def fPost(encodeName=''):
“”“
Функция читает входящий поток, переданный методом POST.
Возвращает словарь - ключ(название переменной) = значение.
”“”
if encodeName == '':
import locale
encodeName = locale.getpreferredencoding()
import urllib.parse as parse
import sys
dVars = {}
pStream = sys.stdin.read()
if len(pStream) < 1: return dVars
# Декодируем строку содержащую последовательности вида %xx
mText = parse.unquote(pStream.replace(“+”,“ ”),encoding=encodeName)
for nameVal in mText.split(“&”):
name,val = nameVal.split(“=”,1)
dVars = val
return dVars
Отредактировано (Май 28, 2009 16:05:56)
Офлайн