Найти - Пользователи
Полная версия: sqlite3 и кодировки
Начало » Python для новичков » sqlite3 и кодировки
1
ruskiy1
Сильно не пинать, только учусь.

создал тестовую базу(кодировка cp1251), создал пару таблиц, забил ее данными (кириллица).
из питона пытаюсь прочитать эти данные - и постоянно натыкаюсь на проблему кодировки

текст test.py:

# -*- coding: utf-8 -*
import sqlite3

mybase = sqlite3.connect('testdb.db')
mybase.text_factory = str
curr = mybase.cursor()
sql_t1 = “select * from site”
curr.execute(sql_t1)
print(curr.fetchone())
curr.close()
mybase.close()
input()

при выполнении валится с ошибкой:

sqlite3.OperationalError: Could not decode to UTF-8 column ‘msg’ with text ‘\uff
fd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd’

пробовал менять кодировку в заголовке test.py - не помогает.
Подскажите как правильно прочитать данные из базы?
п.с. запись в базу происходит без ошибок.
ruskiy1
Решено.

Надо было менять не кодировку в заголовке, а в text_factory:

mybase.text_factory = lambda s: str(s, “cp1251”)
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