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

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

Заранее спасибо.
ZZZ
К сожалению, штатные телепаты уже в объятиях Морфея… Пожалуйста, расскажите подробнее.
Романнн
Хотелось бы как-то быстро перевести результат запроса из Базы из unicode в utf-8 (без прохождения по массиву результатов циклами).
Так же хотелось бы получать переменные из POST и GET в utf-8, а не как сейчас в unicode
ZZZ
Не буду вам отвечать.
Пусть проснуться телепаты и прощупают ваш мозг на тему названия системы управления базой данных и версий всего задействованного ПО.

P.S. Речь скорее всего идёт об sqlite и переходе от питона 2.5 на 2.6… Но буду думать, что я этого не знаю… Злой я. Очень.
helm2004
Скажите, пжалста, какая ОС стояла, версия пайтона, название БД, номер паспорта и размер обуви.
Романнн
На новом хосте: 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
o7412369815963
Романнн
Хотелось бы как-то быстро перевести результат запроса из Базы из unicode в utf-8 (без прохождения по массиву результатов циклами).
перевод таблицы из уникода в утф8:
result = map(lambda row:map(lambda x:x.encode('utf8'),row),table)
Романнн
Так же хотелось бы получать переменные из POST и GET в utf-8, а не как сейчас в unicode
а смысл? уникод - это рабочая кодировка питона, а utf-8 для передачи и хранения.
ZZZ
o7412369815963
а смысл? уникод - это рабочая кодировка питона, а utf-8 для передачи и хранения.
unicode, это не кодировка… Это высокоуровневый объект, представляющий массив символов.
Вопрос про POST и GET вообще не имеет смысла, потому, что нельзя послать в сеть unicode.

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

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

ZZZ
Какую либу используете для связи с постгри? Наверняка в документации по ней можно найти, как решить вашу задачу прозрачно.
Использую psycopg. Эту задачу можно решить вручную, т.е., к примеру, как предложил o7412369815963, хотелось бы так же как и с POST и GET ее решить проще.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB