Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2013 11:40:48

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Кодировка SQLite

Снова добрый день!
Возникла проблема хранения данных в формате unicode в sql-таблицах, погуглил: так и не нашел.
Заранее скажу, что использую для этих нужд sqlite.

Пробовал сам: БД конечно, сохраняет строку у себя, но при выборке пишет примерно следующее:
sqlite3.OperationalError: Could not decode UTF-8 column ‘name’ with text ‘пример’

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

Офлайн

#2 Дек. 22, 2013 12:27:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Кодировка SQLite

Art-master
показывайте код, ибо sqlite работает в UTF-8 по умолчанию, возможно проблема где то в коде



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 22, 2013 12:57:04

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Кодировка SQLite

Вот

# coding: utf8
import sqlite3 as sql
db = sql.connect("data.db")
c = db.cursor()
c.execute(u"CREATE TABLE tab (id INT, name VARCHAR(100));")
c.execute(u"INSERT INTO tab VALUES (1, 'пример');")
c.execute(u"SELECT name FROM tab WHERE id=1;")
print c.fetchone()
db.commit()
db.close()
raw_input()

Только небольшая поправка - раньше я писал ровно то же самое в оболочке, теперь написал как скрипт, теперь выводит следующее:
SyntaxError: ‘utf8’ codec can't decode byte 0xef in position 30: invalid continuation byte

Отредактировано Art-master (Дек. 23, 2013 19:36:29)

Офлайн

#4 Дек. 22, 2013 22:53:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Кодировка SQLite

Art-master
ну во первых, в вашем коде уже синтаксическая ошибка, а именно не INTRO, а INTO… если это опечатка, то подумайте хорошенько как так получилось что вы на форум постите код который не проверяли.
во вторых, я скопировал, вставил, запустил и у меня все работает.
судя по наличию в конце raw_input у вас ОС Windows, так ли это? Вы действительно убедились что сам текст кода программы является текстом кодированным в utf-8, ведь верхняя строчка это указание интерпретатору о том что данный модуль кодирован в utf-8, но сам текст может быть кодирован как угодно (cp1251, cp866) - что может являться причиной разного рода ошибок, включая неявные.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Дек. 23, 2013 19:47:14

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Кодировка SQLite

Простите за синтаксис, но при переносе кода на форум, я его сделал немного более читабельным, и случайно написал INTRO.
Действительно, ошибка была кодировке самого скрипта, что весьма странно, как я мог этого не заметить.

Спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version