SQLite3:非ascii字符未正确更新?

时间:2014-05-14 19:09:17

标签: c sqlite

我正在尝试使用我的C程序上的sqlite3_bind_text16()更新sqlite行上的特定文本列(WVARCHAR)但不幸的是,只有包含ascii编码字符(如L"e"的字符串)才能正确更新,但包含unicode字符(如L"é")的其他字符串会更新,其中非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命令来测试它。

那么如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在更新之前向数据库发出以下PRAGMA

PRAGMA encoding = 'utf8';

这应该确保sqlite正确更新非ASCII字符。

相关问题