我正在掃描我的系統並使用python將文件名輸入到sqlite3數據庫。在數據庫中輸入特殊字符
其中一個文件恰好在名稱中包含特殊字符,並在插入記錄時產生錯誤。這是文件名。
a¿.mp3
這是查詢
self.cursor.execute("INSERT INTO TRACKS VALUES (?)", i)
也因特殊字符,我無法對其進行編碼以UTF-8。
是否有其他的編碼可以用來將這些數據添加到數據庫中?
我正在掃描我的系統並使用python將文件名輸入到sqlite3數據庫。在數據庫中輸入特殊字符
其中一個文件恰好在名稱中包含特殊字符,並在插入記錄時產生錯誤。這是文件名。
a¿.mp3
這是查詢
self.cursor.execute("INSERT INTO TRACKS VALUES (?)", i)
也因特殊字符,我無法對其進行編碼以UTF-8。
是否有其他的編碼可以用來將這些數據添加到數據庫中?
您可以嘗試utf-16編碼,或在特殊字符周圍添加「'。
您使用的是os.walk
嗎?如果是這樣,請將目錄名稱不作爲裸露的字符串,而是作爲unicode對象傳遞,如os.walk(u'/some/path')
以獲取unicode中的所有文件。那麼你可以使用utf-8編碼(或者utf-16,如果utf-8不夠用)filename.encode('utf-8')
utf16會成功編碼其他數據嗎?或者我會不得不繼續檢查數據的類型並進行相應的編碼? – 2013-02-17 08:53:50
我還沒有測試過,但是會認爲它會起作用,只要你稍後將它作爲utf-16打開即可。 – Gjordis 2013-02-17 08:55:27
這是我的源dbInput = [(unicode(i,'utf-16'),)我在匹配] 而有些是常規輸入和一些是特殊字符,我收到錯誤爲 UnicodeDecodeError:'utf16'編解碼器無法解碼位置82中的字節0x33:常規輸入的截斷數據。 – 2013-02-17 08:56:31