Форум сайта python.su
Здравствуйте!
У меня есть в БД(sqlLite3) записи в юникоде(cp1251) на украинском языке.
Когда я делаю выборку из БД то мне возвращает символы в крякозябле. Как декодировать обратно?
PS. Python 2.5, OS WindowsXP
def in_db_lang_text(self):
db = sqlite3.connect('films.db')
cursor=db.cursor()
k= cursor.execute('SELECT * FROM lang WHERE id=1;')
u=""
for row in k:
u+=str(row)+","
cursor.close()
db.close()
return u
lan=self.in_db_lang_text()
print lan
выдает такое:
(1, u'\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430', u'Ukrainian', u'\u0412\u0438\u0431\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430', u'\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447:', u'\u041f\u0430\u0440\u043e\u043b\u044c:')
Отредактировано (Апрель 30, 2009 23:04:01)
Офлайн
helm2004так в юникоде или cp1251?
У меня есть в БД(sqlLite3) записи в юникоде(cp1251)
Офлайн
А хрен его знает, даю полный сурс записи в БД:
# -*- coding: cp1251 -*-
import sqlite3
db = sqlite3.connect('films.db')
cursor=db.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS users('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT,'pass' TEXT, 'path_cover' TEXT, 'path_screen' TEXT, 'path_cont' TEXT,\
'lang' INTEGER )")
cursor.execute("CREATE TABLE IF NOT EXISTS contact('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT, 'tel_mob' TEXT, 'photo' TEXT, 'film list' TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS quality_films('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS genre_films('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS types_of_media('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS films('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT, 'year' INTEGER, 'description' TEXT, 'cover' TEXT, 'screens' TEXT, \
'types_of_media' INTEGER, 'size' INTEGER, 'nunber_cd' INTEGER, 'genre_films' TEXT, \
'quality_films' INTEGER)")
cursor.execute("CREATE TABLE IF NOT EXISTS lang('id' INTEGER PRIMARY KEY AUTOINCREMENT, \
'name' TEXT, 'name_EN' TEXT, 'usersWindowTitle' TEXT, 'user_choice_text' TEXT,\
'pass_choice_text' TEXT )")
try:
cursor.execute("INSERT INTO users(id,name) VALUES(1,'admin');")
cursor.execute(u"INSERT INTO lang(id,name,name_EN,usersWindowTitle,user_choice_text,\
pass_choice_text) VALUES(1,'Українська','Ukrainian','Виберить користувача','Користувач:',\
'Пароль:');")
except Exception:
print "lklklkkl"
db.commit()
cursor.close()
db.close()
Офлайн
нужно еще конфиг sqlite
Офлайн
helm2004cp1251 это не есть юникод…
У меня есть в БД(sqlLite3) записи в юникоде(cp1251) на украинском языке.
sypper-pitO_o у sqlite есть конфиг?!
нужно еще конфиг sqlite
Офлайн
Чуваги, ай ем сорри, может я не правильно вопрос задал, но, мне нужно чтоб запись из БД следуещего типа превратилась в читабельную:
1, u'\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430', u'Ukrainian', u'\u0412\u0438\u0431\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430', u'\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447:', u'\u041f\u0430\u0440\u043e\u043b\u044c:')
ятак понимаю, что это юникод.
Офлайн
igor.kaistУ всего есть конфиг :) а к БД это тоже относится :)sypper-pitO_o у sqlite есть конфиг?!
нужно еще конфиг sqlite
Офлайн
helm2004тут нужно перекодировку делать из utf8 в cp1251
Чуваги, ай ем сорри, может я не правильно вопрос задал, но, мне нужно чтоб запись из БД следуещего типа превратилась в читабельную:
1, u'\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430', u'Ukrainian', u'\u0412\u0438\u0431\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430', u'\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447:', u'\u041f\u0430\u0440\u043e\u043b\u044c:')
ятак понимаю, что это юникод.
Офлайн
sypper-pit, нет у нее конфига :) или я что то пропустил…
Офлайн
igor.kaistвсё зависит от ОС и какие параметры стоят на ней , тип файловой системы :) а с конфигом что то загнул , сори :)
нет у нее конфига
Офлайн