[英]SQLite3: non-ascii characters not updated correctly?
我正在尝试在我的C程序上使用sqlite3_bind_text16()
更新sqlite行上的特定文本列(WVARCHAR),但是不幸的是,只有包含ascii编码字符(如L"e"
的字符串才能正确更新,而其他包含诸如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数据库文件使用sqlite shell执行select命令来进行测试。
那么如何解决呢?
在更新之前,向数据库发出以下PRAGMA
:
PRAGMA encoding = 'utf8';
这应该确保sqlite正确更新非ASCII字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.