我正在尝试使用我的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命令来测试它。
那么如何解决这个问题?
答案 0 :(得分:0)
在更新之前向数据库发出以下PRAGMA
:
PRAGMA encoding = 'utf8';
这应该确保sqlite正确更新非ASCII字符。