• 2476阅读
  • 7回复

QSQLITE给字段写入3个汉字与以上就会出错 [复制链接]

上一主题 下一主题
离线ycyu1455
 

只看楼主 倒序阅读 楼主  发表于: 2018-10-09
还有对计算机的机这个字就特容易导致出错,导致注入记录失败,我的系统是Win10、文本编码是utf-8,换成GBK编码也是这样,其他编码在qt creator中会变成乱码
离线bran_lee

只看该作者 1楼 发表于: 2018-10-10
你是怎么写入的?能把相关代码段放出来吗?
当你只有锤子时,你看什么都像是钉子!
离线dbzhang800

只看该作者 2楼 发表于: 2018-10-10
你用的MinGW还是MSVC,如果是后者,给出如下信息:

VS的具体版本(包括Update版本)
源文件的编码格式(包括有没有BOM)
试图做了什么处理来获得UTF8的执行字符集(包括有没有设置特别的编译器选项,比如/utf8,源码内有没有定义特别的宏等等)
离线ycyu1455

只看该作者 3楼 发表于: 2018-10-10
源文件编码是utf-8,没有bom
Qt 5.7 MSVC
Qt Creator 4.0.2
VS2013,版本号是12.0.30.501.0 rel,后面图是调试器与编译器版本



这是建表与插入数据的代码,第二条无法插入,”计算机机机机机机机机机”改成“计算”才成功插入
    query.exec("create table course ('名字1' varchar primary key, '名字2' nvarchar, '名字3' nvarchar, '名字4' nvarchar)");
    qDebug() << query.lastError();
    query.exec("insert into course values('数学', '数学', '王老师', '王老师')");
    qDebug() << query.lastError();
    query.exec("insert into course values(3    , '计算机机机机机机机机机', '白老师', '白老师')");
    qDebug() << query.lastError();


后面是错误提示

QSqlError("", "", "")
QSqlError("", "", "")
QSqlError("1", "Unable to execute statement", "near \"白老师\": syntax error")

离线dbzhang800

只看该作者 4楼 发表于: 2018-10-10
我没用过MSVC2013,不过我想,如果你回答了我前面的第三个问题,应该就解决了。


http://www.qtcn.org/bbs/read-htm-tid-54663.html
4条评分好评度+1贡献值+1金钱+1威望+1
ycyu1455 好评度 +1 终于解决了,太感谢了 2018-10-10
ycyu1455 贡献值 +1 终于解决了,太感谢了 2018-10-10
ycyu1455 威望 +1 终于解决了,太感谢了 2018-10-10
ycyu1455 金钱 +1 终于解决了,太感谢了 2018-10-10
离线ycyu1455

只看该作者 5楼 发表于: 2018-10-10
回 dbzhang800 的帖子
dbzhang800:我没用过MSVC2013,不过我想,如果你回答了我前面的第三个问题,应该就解决了。
http://www.qtcn.org/bbs/read-htm-tid-54663.html (2018-10-10 18:09)

我的vs2013是源程序安装的版本,还没升过级

源文件的编码格式是utf-8,换成带BOM的,虽然可以写入,没有出错,但是全是乱码,这也算成功吗

我想写入中文数据到表里面

----------------------------------------------------------------------------------
好像是解决了,在头文件声明前 添加这行代码#pragma execution_character_set("utf-8"),就可以了,明天再查看这代码是什么意思,然后复制过来,这是答案源https://www.cnblogs.com/findumars/p/5083304.html

离线stlcours

只看该作者 6楼 发表于: 2018-10-10
把sqlite的create table语句贴出来.反正我这里没有问题.
离线彩阳

只看该作者 7楼 发表于: 2018-10-15
代码最好不要写
#pragma execution_character_set("utf-8")
这样的代码不具有跨平台性。
最好是文件内容写utf-8。然后不在源代码中硬编码中文。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个