SQLite3:非ascii字符未正确更新?
我正在尝试在我的C程序上使用sqlite3_bind_text16()
更新sqlite行上的特定文本列(WVARCHAR)但不幸的是,只有包含像L"e"
这样的ascii编码字符的字符串才能正确更新,但其他字符串包含更新了像L"é"
这样的unicode字符,其中非ascii字符未正确存储。 这是我如何使用该函数的示例:
sqlite3_bind_text16(stmt, 1, L"e", -1, SQLITE_STATIC); //e is stored correctly sqlite3_bind_text16(stmt, 2, L"é", -1, SQLITE_STATIC); //é not stored correctly: modified
我通过使用sqlite shell为我的程序的sqlite数据库文件执行select命令来测试它。
那怎么解决呢?
在更新之前向数据库发出以下PRAGMA
:
PRAGMA encoding = 'utf8';
这应该确保sqlite正确更新非ASCII字符。