QT5 MSVC2013数据库SQLserver操作中文显示乱码问题

版权声明:转载请注明出处:http://blog.csdn.net/wangmi0354 https://blog.csdn.net/wangmi0354/article/details/50728415

由于项目需要,依赖window平台,Qt出现中文乱码问题,现在将解决方案整理如下.


2016.06.03更新

通过预编译头文件的的方式实现指定输出格式.具体参考另一片博客"qt 预编译头文件"

在stable.h中添加

#if _MSC_VER >= 1600

#pragma execution_character_set("utf-8")

#endif

---------------------------------------------------------------------------------------------


环境:

WIN10×64
QT5.5_MSVC2013
SQLSERVER_2012
VS2013_COMMUNITY


总结:

Qt (>=5)下使用VS(vc++12 amd64)编译器经行中文编辑的各种情况

情况A:使用系统默认编码(GBK)

可以qDebug()中文,但是编码方式局限比较大,而且导入数据库会有乱码出现(Ps:有人建议说可以乱码存入,然后乱码读出,只要用的编码方式一样就行,我没试)

情况B:使用UTF-8编码(不带BOM)

这种情况比较奇葩,中文只可以是偶数,奇数的时候编译器会报错error C2001:常量中有换行符,即使在中文后面添加符号(英文符号)强制补成偶数,数据库中还是会有乱码出现.具体原因见参考[1].

情况C:使用UTF-8编码(带BOM)

编译不会出现error c2001错误,但是qDebug()和数据库中会直接中文乱码.


解决方案:1.设置
将Qt Creater进行如下设置;
工具>>选项>>文本编辑器>>文件编码
默认编码:UTF-8
UTF-8 BOM:如果编码是UTF-8则添加
如下图:

Ps:对于以前的项目或者别人的代码,建议使用Notepad++等其它软件进行编码转换.


2.使用:

在需要qDebug()输出中文或者需要对数据库进行操作的时候用QStringLiteral将字符包裹[2],使用和效果如下图:




参考:

 [1].http://www.cnblogs.com/kuliuheng/p/3397796.html

 [2].http://www.tuicool.com/articles/6nUrIr

 [3].http://blog.csdn.net/dbzhang800/article/details/7542672

展开阅读全文

没有更多推荐了,返回首页