В настоящее время я сохраняю имена файлов в базе данных sqlite для своих целей. Всякий раз, когда я пытаюсь вставить файл со специальным символом (например, é и т. д.), он выдает следующую ошибку:
pysqlite2.dbapi2.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Когда я «переключаю свое приложение на строки Unicode», упаковывая значение, отправленное в pysqlite, с помощью метода unicode, например: unicode(filename)
, он выдает эту ошибку:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 66: ordinal not in range(128)
Есть ли что-то, что я могу сделать, чтобы избавиться от этого? Изменение всех моих файлов для соответствия не вариант.
ОБНОВЛЕНИЕ Если я декодирую текст с помощью filename.decode("utf-8")
, я все еще получаю указанную выше ошибку ProgrammingError.
Мой фактический код выглядит так:
cursor.execute("select * from musiclibrary where absolutepath = ?;",
[filename.decode("utf-8")])
Как должен выглядеть мой код здесь?