Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用SQLite插入/读取Base64字符串_Javascript_Sql_Database_Sqlite_Base64 - Fatal编程技术网

Javascript 使用SQLite插入/读取Base64字符串

Javascript 使用SQLite插入/读取Base64字符串,javascript,sql,database,sqlite,base64,Javascript,Sql,Database,Sqlite,Base64,我试图将base64编码的字符串插入SQLite数据库,但当我读回该值时,得到的结果与保存的结果不同。更具体地说,每当我的字符串包含“+”字符时,它就会在我的数据库中存储为“?” 我想base64中的两个非字母数字字符,“+”和“/”可能是SQLite中的敏感字符,所以我做了一些研究,看到了这个页面: 我看到+是一元运算符,和/是二元运算符。。。但是,如果我将包含这些字符的字符串插入到我的表中,它应该不会引起任何问题,对吗 此外,这可能与问题无关,但我使用Javascript编码,我使用的SQL

我试图将base64编码的字符串插入SQLite数据库,但当我读回该值时,得到的结果与保存的结果不同。更具体地说,每当我的字符串包含“+”字符时,它就会在我的数据库中存储为“?”

我想base64中的两个非字母数字字符,“+”和“/”可能是SQLite中的敏感字符,所以我做了一些研究,看到了这个页面:

我看到+是一元运算符,和/是二元运算符。。。但是,如果我将包含这些字符的字符串插入到我的表中,它应该不会引起任何问题,对吗

此外,这可能与问题无关,但我使用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编码的字符串没有正确地进行笔划。

@Marcelo code添加了,但不确定这是否会有帮助。在不了解您的经验水平的情况下,更安全的做法是询问。我看不出代码有任何明显的错误。SQLite没有理由替换字符,特别是当您将值作为参数传递时。恐怕这个对我来说是个谜。我只能猜测这种奇怪的情况发生在base64编解码器级别,而不是SQLite级别。