2013-02-17 103 views
0

我正在掃描我的系統並使用python將文件名輸入到sqlite3數據庫。在數據庫中輸入特殊字符

其中一個文件恰好在名稱中包含特殊字符,並在插入記錄時產生錯誤。這是文件名。

a¿.mp3 

這是查詢

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

也因特殊字符,我無法對其進行編碼以UTF-8。

是否有其他的編碼可以用來將這些數據添加到數據庫中?

回答

0

您可以嘗試utf-16編碼,或在特殊字符周圍添加「'。

+0

utf16會成功編碼其他數據嗎?或者我會不得不繼續檢查數據的類型並進行相應的編碼? – 2013-02-17 08:53:50

+0

我還沒有測試過,但是會認爲它會起作用,只要你稍後將它作爲utf-16打開即可。 – Gjordis 2013-02-17 08:55:27

+0

這是我的源dbInput = [(unicode(i,'utf-16'),)我在匹配] 而有些是常規輸入和一些是特殊字符,我收到錯誤爲 UnicodeDecodeError:'utf16'編解碼器無法解碼位置82中的字節0x33:常規輸入的截斷數據。 – 2013-02-17 08:56:31

0

您使用的是os.walk嗎?如果是這樣,請將目錄名稱不作爲裸露的字符串,而是作爲unicode對象傳遞,如os.walk(u'/some/path')以獲取unicode中的所有文件。那麼你可以使用utf-8編碼(或者utf-16,如果utf-8不夠用)filename.encode('utf-8')