2011-02-11 159 views
0

我試圖在我的SQLite數據庫中插入一個base64編碼的字符串,但是當我讀回值時,得到的結果與我保存的不同。更具體地說,每當我的字符串包含一個「+」字符,它就會被存儲爲'?'在我的分貝。用SQLite插入/讀取Base64字符串

我想,也許在base64--兩個非字母數字字符,即「+」和「/」在SQLite的敏感字符,所以我做了一些研究,看到這個頁面:http://www.sqlite.org/lang_expr.html

我看到+是一元運算符,並且/是一個二元運算符......但是,如果我將包含這些字符的字符串插入到表中,它不應該引起任何問題嗎?

此外,這可能與問題無關,但我使用Javascript編碼,我使用的SQLite是一個客戶端側數據庫的Firefox。

至於代碼,我與Firefox瀏覽器提供了這個API存儲:

db.record({COLNAME:MY_BASE64_STRING}) 

,我這個閱讀:

let db_query = "SELECT * FROM " + dbstore._tableName + " WHERE col_1 = :row_id"; 
let statement = dbstore._createStatement(db_query); 
statement.params.row_id=base64_string; 
+0

一些代碼會有所幫助。 – 2011-02-11 05:41:10

回答

1

看來,他們正在做一些輸入XSS防衛的衛生處理。這就是爲什麼b64編碼的字符串沒有正確地存檔。