Есть sqlite бд. Вставляю через sqlite3/aioodbc текст в utf-8 в колонку с типом TEXT, но вместо текста в бд сохраняется что-то странное. PRAGMA encoding выводит utf-8.
Вот пример проблемы:
оригинальный текст: Биология, текст в бд: 8>;>38O
Обществознание -> 1I5AB2>7=0=85
Что сохраняется в бд, и как исправить эту проблему?
Алексей С., спасибо за ответ, я уже видел этот пост. И ответ в нем странный: chcp меняет только кодовую страницу на винде, а я на мак оси. PRAGMA encoding должен менять кодировку, но почитав о кодировке sqlite, я узнал, что кодировка задается при создании бд, и впоследствии ее нельзя поменять. Я изначально создал бд с кодировкой utf-8.
Вот код insert'a:
async with pool.acquire() as conn:
cur = await conn.cursor()
for course in courses:
if course['subject_id'] not in inserted:
await cur.execute(
'INSERT INTO subjects (subject_id, subject_name) VALUES ({}, \'{}\')'.format(
course['subject_id'], course['subject']))
await cur.commit()
inserted.append(course['subject_id'])
await cur.close()
await conn.close()
pool.close()
await pool.wait_closed()
Вот код подключения:
dsn = 'Driver={SQLite3 Driver};Database=../dbs/storage.db;'
pool = await aioodbc.create_pool(dsn=dsn, loop=loop)
Алексей С., '# -*- coding: utf-8 -*- sys.setdefaultencoding('utf8')..., а в самом заголовке прописано что код утф-8 ? ' зачем? Я пишу в pycharm'е на python 3.5, он по умолчанию создает и сохраняет в utf-8.
Ссылка не помогла
Алексей С., наконец решил проблему. Я делал запрос так: 'INSERT INTO subjects (subject_id, subject_name) VALUES ({}, \'{}\')'.format(course['subject_id'], course['subject']) и видимо дело было в format.