вставка / чтение строк Base64 с SQLite - PullRequest
1 голос
/ 11 февраля 2011

Я пытался вставить строку в кодировке base64 в базу данных SQLite, но когда я читаю значение, я получаю результат, отличный от того, что я сохранил.Более конкретно, каждый раз, когда моя строка содержит символ «+», она сохраняется как «?».в моей базе данных.

Я подумал, что, возможно, два не алфавитно-цифровых символа в base64, а именно '+' и '/', являются чувствительными символами в SQLite, поэтому я провел небольшое исследование и увидел эту страницу:http://www.sqlite.org/lang_expr.html

Я вижу, что + является унарным оператором, а / является двоичным оператором ... но, тем не менее, если я вставлю строку, содержащую эти символы, в мою таблицу, это не должно вызвать никаких проблем?

Кроме того, это может быть не связано с проблемой, но я кодирую с Javascript, я использую SQLite является клиентская сторона базы данных для Firefox.

Что касаетсякод, который я храню с этим API, предоставленным Firefox:

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;

1 Ответ

2 голосов
/ 17 февраля 2011

Кажется, что они делают некоторую очистку входных данных для защиты XSS.Вот почему строки в кодировке b64 не записываются должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...