我尝试将base64编码的字符串插入到我的SQLite数据库中,但是当我读回该值时,得到的结果与我保存的结果不同。更具体地说,每次我的字符串包含“+”字符时,它都会被存储为“?”在我的数据库中。
我想也许是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 :(得分:2)
他们似乎正在为XSS防御做一些输入清理。这就是为什么b64编码的字符串没有正确执行。