Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сохранить в БД json-кодированную строку ? В базе сохраняется абракадабра 
:(
    Опции темы
HongKilDong
Дата 3.5.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



В результате распарсивания json имеем json-кодированное представление строки из кириллических символов, например: 
Код

u'\u0417\u0430\u0449\u0438\u0442\u0430'


При попытке вставки в MySQL базу c кодировкой utf-8, используя библиотеку MySQLdb:
Код

cur.execute("INSERT INTO tst (tst) VALUES (%s)", u'\u0417\u0430\u0449\u0438\u0442\u0430'.encode('utf_8'))


Имеем в базе абракадабру
Код

Защита


При извлечении из базы тем же MySQLdb результат не лучше:

Код

cur.execute("SELECT * FROM tst")
row = cur.fetchone()
print row[0]

Код

Защита


Подскажите, как получить в базе нормальное кириллическое представление строки ?
PM MAIL   Вверх
Arantir
Дата 3.5.2013, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Цитата(HongKilDong @  3.5.2013,  12:42 Найти цитируемый пост)
Имеем в базе абракадабру

Записано в UTF-8, а прочтено как windows-1252

Цитата(HongKilDong @  3.5.2013,  12:42 Найти цитируемый пост)
При извлечении из базы тем же MySQLdb результат не лучше:

Записано в UTF-8, а прочтено как windows-1251

Настройте кодировки везде одинаковые.
Данные в самой базе в полном порядке, вы просто в неправильной кодировке их читаете.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
HongKilDong
Дата 3.5.2013, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Абракадабра в базе была при просмотре клиентами в кодировке UTF-8, смотрел 2 разными клиентами, получается записано было в базу всё таки не в UTF-8, похоже python передавал MySQLdb текст в UTF-8, а MySQLdb всё равно писал в базу в своей кодировке. 

Вообщем стал писать в базу так: 
Код

cur.execute("SET NAMES UTF8")
cur.execute("INSERT INTO tst (tst) VALUES (%s)", unicode_str.encode('utf-8'))


В базе всё отображается нормально, но с MySQLdb про прежнему траблы, если читать в рамках того же подключения в котором была записть (и SET NAMES UTF8) то на выходе имеем пере-utf8-кодированный текст, если читать в "чистом" подключении, без SET NAMES UTF8 то всё нормально.

Это сообщение отредактировал(а) HongKilDong - 3.5.2013, 18:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.