我试图将一个 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;
最佳答案
他们似乎正在为 XSS 防御做一些输入清理。这就是为什么 b64 编码的字符串没有正确存储的原因。
关于javascript - 使用 SQLite 插入/读取 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4965969/