当前位置: 代码迷 >> 其他数据库 >> c++插入sqlite中文总是乱码××××××××解决方法
  详细解决方案

c++插入sqlite中文总是乱码××××××××解决方法

热度:6647   发布时间:2013-02-26 00:00:00.0
c++插入sqlite中文总是乱码××××××××
CppSQLite3DB db;
db.open("\\temp\\data\\NCTDataBase.s3db");
memset (acTmp, 0, sizeof(acTmp));
strcpy(aa, "大婶");
sprintf(acTmp, "UPDATE t_b_commodity SET COMMODITY_NAME = '大婶' where COMMODITY_CODE = '33020009';",aa);
db.execDML(acTmp);

用可视化工具观察数据库是乱码,
且在获取数据的时候始终得不到正确的中文

wchar_t *pTmp = AnsiToUnicode(q.fieldValue(0));
CString aa = (CString)q.fieldValue(0);

两种方式都不对



------解决方案--------------------------------------------------------
转换成utf8编码存放!
------解决方案--------------------------------------------------------
字符集的原因,sqlite 仅支持 
"UTF-8"; 
"UTF-16"; 
"UTF-16le"; 
"UTF-16be";

这几种字符集。你用 gb2312 / gbk 则需要自己进行特殊处理了。
------解决方案--------------------------------------------------------
使用命令行方式撕开你的数据库,设置编码字符集
PRAGMA encoding="UTF-8";

------解决方案--------------------------------------------------------
探讨
使用命令行方式撕开你的数据库,设置编码字符集
PRAGMA encoding="UTF-8";

  相关解决方案