在使用wxsqlite3时,通常会遇到中文不能读取问题。 【wxwidgets中文论坛】 http://www.wxcn.org
原因是:wxsqlite3在内部使用的是utf-8编码,如果导入的sqlite3数据库是gb2312的,那么wxsqlite3在读取的时候,将获取不到中文字段的数据。
解决办法,创建utf-8编码的sqlite3数据库,wxsqlite3就可以正常读写。
使用工具创建的方法这里不做详细介绍,下面具体介绍如何使用sqlite3.exe命令行创建utf-8编码的数据库:
比如需要创建一个sqlite3数据库zl.db ,先运行如下命令创建数据库:
sqlite3.exe zl.db创建数据表TDayInfo:
如格式为:GL,ZL,Info,以GL为主键
创建的相关的sql语句:
PRAGMA encoding="UTF-8";PRAGMA foreign_keys=OFF;
CREATE TABLE "TDayInfo" (
"GL" TEXT NOT NULL,
"ZL" TEXT,
"Info" TEXT,
PRIMARY KEY ("GL" ASC)
);
设置模式的命令为:
.mode csv (或者使用“ .separator "," ”指定分隔符为英文逗号)
导入数据说明:
其中rq.csv是以逗号分隔的csv文件,总共三行,包含中文字段,可从access中导出,或者从直接用文本编辑器编辑。
如需在wxsqlite3中使用,则rq.csv必须保存成utf-8编码
——导入rq.csv后使用sqlite3.exe查询为乱码,但是使用wxsqlite3访问则可正常显示中文。
如rq.csv是ASCII编码,那么导入后,使用sqlite3.exe查询正常显示中文,但使用wxsqlite3访问则查出来为空值。
导入的命令为:.import rq.csv TDayInfo
导入完成后就可以使用了。
退出命令:
.exit
这样,utf-8编码的sqlite3数据库就创建成功了。此时在wxsqlite3中调用查询,就不存在乱码或者读取不出中文数据的问题了。
欢迎大家一起学习交流