Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2010 22:49:43

Романнн
От:
Зарегистрирован: 2009-09-30
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode и utf-8

Возникла проблема при переезде сайта на другой хост, на нем стоят Python и Django других версий.
Раньше данные доставались из Базы в utf-8 (база в кодировке utf-8), а теперь данные из Базы приходят в unicode. Можно массив данных, полученных из Базы, разбивать ячейки и каждую из них, по-возможности, переводить в utf-8. Хотелось бы как-то по-проще перевести из unicode в utf-8.

И такая же проблема в получении данных из POST и GET.

Заранее спасибо.



Офлайн

#2 Фев. 15, 2010 23:32:33

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

unicode и utf-8

К сожалению, штатные телепаты уже в объятиях Морфея… Пожалуйста, расскажите подробнее.



Офлайн

#3 Фев. 15, 2010 23:36:38

Романнн
От:
Зарегистрирован: 2009-09-30
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode и utf-8

Хотелось бы как-то быстро перевести результат запроса из Базы из unicode в utf-8 (без прохождения по массиву результатов циклами).
Так же хотелось бы получать переменные из POST и GET в utf-8, а не как сейчас в unicode



Офлайн

#4 Фев. 16, 2010 00:54:39

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

unicode и utf-8

Не буду вам отвечать.
Пусть проснуться телепаты и прощупают ваш мозг на тему названия системы управления базой данных и версий всего задействованного ПО.

P.S. Речь скорее всего идёт об sqlite и переходе от питона 2.5 на 2.6… Но буду думать, что я этого не знаю… Злой я. Очень.



Отредактировано (Фев. 16, 2010 00:57:21)

Офлайн

#5 Фев. 16, 2010 08:59:37

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

unicode и utf-8

Скажите, пжалста, какая ОС стояла, версия пайтона, название БД, номер паспорта и размер обуви.

Офлайн

#6 Фев. 16, 2010 14:15:53

Романнн
От:
Зарегистрирован: 2009-09-30
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode и utf-8

На новом хосте: Python 2.6.2, Django 1.1, СУБД PostgreSQL 8.3.3, FreeBSD 7.2
На старом: Python 2.5 (не точно), Django 0.96, postgresql-server-8.1.17_1, FreeBSD 6.3-STABLE



Офлайн

#7 Фев. 16, 2010 15:13:17

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

unicode и utf-8

Романнн
Хотелось бы как-то быстро перевести результат запроса из Базы из unicode в utf-8 (без прохождения по массиву результатов циклами).
перевод таблицы из уникода в утф8:
result = map(lambda row:map(lambda x:x.encode('utf8'),row),table)
Романнн
Так же хотелось бы получать переменные из POST и GET в utf-8, а не как сейчас в unicode
а смысл? уникод - это рабочая кодировка питона, а utf-8 для передачи и хранения.

Отредактировано (Фев. 16, 2010 15:17:33)

Офлайн

#8 Фев. 16, 2010 16:03:35

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

unicode и utf-8

o7412369815963
а смысл? уникод - это рабочая кодировка питона, а utf-8 для передачи и хранения.
unicode, это не кодировка… Это высокоуровневый объект, представляющий массив символов.
Вопрос про POST и GET вообще не имеет смысла, потому, что нельзя послать в сеть unicode.

Романнн
PostgreSQL
Какую либу используете для связи с постгри? Наверняка в документации по ней можно найти, как решить вашу задачу прозрачно.
Например, sqlite можно указать функции, которые будут (де-)кодировать text базы данных.



Офлайн

#9 Фев. 16, 2010 16:52:36

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

unicode и utf-8

ZZZ
o7412369815963
а смысл? уникод - это рабочая кодировка питона, а utf-8 для передачи и хранения.
unicode, это не кодировка… Это высокоуровневый объект, представляющий массив символов.
Вопрос про POST и GET вообще не имеет смысла, потому, что нельзя послать в сеть unicode.
в питоне все - высокоуровневый объект,
уникод - все же кодировка, символы кодируются в 16бит. за счет фиксированного веса символа с ним проще работать чем например с утф8 у которого вес символа плавающий. ( вес - кол-во бит )

POST и GET можно послать в уникоде, но сервер не поймет :), а питон при передаче текста в уникоде преобразует его в утф8, например когда делаем принт или передачу данных через сокеты, на другой стороне выходит утф8.

Офлайн

#10 Фев. 16, 2010 17:33:51

Романнн
От:
Зарегистрирован: 2009-09-30
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

unicode и utf-8

ZZZ
Вопрос про POST и GET вообще не имеет смысла, потому, что нельзя послать в сеть unicode.
Мне приходит строка в unicode и необходимо ее передать в utf-8, пока вижу только вариант перекодировать каждую такую строку. Хотелось бы узнать, нельзя ли как-то проще это сделать, может в настройках прописать как-то, чтобы строка приходила из POST и GET сразу в utf-8 и что-то типа этого.

ZZZ
Какую либу используете для связи с постгри? Наверняка в документации по ней можно найти, как решить вашу задачу прозрачно.
Использую psycopg. Эту задачу можно решить вручную, т.е., к примеру, как предложил o7412369815963, хотелось бы так же как и с POST и GET ее решить проще.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version