Я пытаюсь сохранить некоторые данные формы в формате UTF-8 в базе данных sqlite. Я связываю ввод с помощью
int bindText(int index, const char *text, void func(void*)) {
return sqlite3_bind_text(comp_stat, index, text, -1, func);
}
и скомпилированный оператор является простым INSERT-запросом.
"INSERT INTO `tbl` (`id`,...`,`title`) VALUES (?,...,?);
и оператор CREATE равен
CREATE TABLE `tbl` (
`id` INTEGER NOT NULL,
...,
`title` TEXT
);
Запрос выполняется, и все в порядке, за исключением того, что если входная строка не является строкой utf-8, не входящей в ASCII, я не смогу получить ее, и Браузер SQLite также показывает это поле как BLOB, а не как TEXT. больше. Я также безнадежно попробовал sqlite3_bind_text16, как кто-то предложил, и, конечно, результат был не в порядке, но на этот раз это был искаженный текст в совершенно другой кодовой странице UTF-8, но поле снова было TEXT, а не BLOB.
Если я использую простые символы abcd, все работает нормально, поэтому я не думаю, что в моих запросах есть фундаментальные проблемы. Любая помощь приветствуется.
OK. В моих тестах возникла проблема, и теперь у меня гораздо более точная информация!
Это работает:
cs-> bindText (12, u8 "سلام", sfree);
но это не удалось (BLOB):
cs-> bindText (12, (std :: string (u8 "سلام")). c_str (), sfree);
В чем моя проблема? Еще раз спасибо!