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字符。