2013-02-17 4 views
0

Я просматриваю свою систему и вводя имена файлов в базу данных sqlite3 с помощью python.Ввод специальных символов в базу данных

Один из файлов имеет особый символ в своем имени и создает ошибку при вставке записи. Это имя файла.

a¿.mp3 

это запрос

self.cursor.execute("INSERT INTO TRACKS VALUES (?)", i) 

Также в связи с особым характером, я не кодировать его в UTF-8.

Есть ли какая-то другая кодировка, которую я могу использовать для добавления этих данных в базу данных?

ответ

0

Вы можете попробовать кодировку utf-16 или добавить '' вокруг специального символа.

+0

Будет ли utf 16 успешно кодировать другие данные? или мне придется постоянно проверять данные и кодировать их соответственно? –

+0

Я не тестировал, но предполагал, что это сработает, пока вы откроете его как utf-16 позже. – Gjordis

+0

Это мой источник dbInput = [(unicode (i, 'utf-16'),) для i в совпадениях] , в то время как некоторые являются регулярными вводами, а некоторые являются специальными символами, я получаю ошибку как UnicodeDecodeError: 'utf16' кодек не может декодировать байт 0x33 в позиции 82: усеченные данные для регулярного ввода. –

0

Вы используете os.walk для этого? Если вы это сделаете, передайте имя каталога не как голую строку, а как объект unicode, например os.walk(u'/some/path'), чтобы получить все файлы в Юникоде. Затем вы можете закодировать их в utf-8 (или utf-16, если utf-8 недостаточно) с filename.encode('utf-8')

Смежные вопросы