В настоящее время я сохраняю имена файлов в базе данных 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")])
Как должен выглядеть мой код здесь?