Javascript 使用SQLite插入/读取Base64字符串
我试图将base64编码的字符串插入SQLite数据库,但当我读回该值时,得到的结果与保存的结果不同。更具体地说,每当我的字符串包含“+”字符时,它就会在我的数据库中存储为“?” 我想base64中的两个非字母数字字符,“+”和“/”可能是SQLite中的敏感字符,所以我做了一些研究,看到了这个页面: 我看到+是一元运算符,和/是二元运算符。。。但是,如果我将包含这些字符的字符串插入到我的表中,它应该不会引起任何问题,对吗 此外,这可能与问题无关,但我使用Javascript编码,我使用的SQLite是Firefox的客户端数据库 至于代码,我使用Firefox提供的API存储:Javascript 使用SQLite插入/读取Base64字符串,javascript,sql,database,sqlite,base64,Javascript,Sql,Database,Sqlite,Base64,我试图将base64编码的字符串插入SQLite数据库,但当我读回该值时,得到的结果与保存的结果不同。更具体地说,每当我的字符串包含“+”字符时,它就会在我的数据库中存储为“?” 我想base64中的两个非字母数字字符,“+”和“/”可能是SQLite中的敏感字符,所以我做了一些研究,看到了这个页面: 我看到+是一元运算符,和/是二元运算符。。。但是,如果我将包含这些字符的字符串插入到我的表中,它应该不会引起任何问题,对吗 此外,这可能与问题无关,但我使用Javascript编码,我使用的SQL
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编码的字符串没有正确地进行笔划。@Marcelo code添加了,但不确定这是否会有帮助。在不了解您的经验水平的情况下,更安全的做法是询问。我看不出代码有任何明显的错误。SQLite没有理由替换字符,特别是当您将值作为参数传递时。恐怕这个对我来说是个谜。我只能猜测这种奇怪的情况发生在base64编解码器级别,而不是SQLite级别。