qt5 中文问题

//QString默认使用unicode 编码来存储;

//但是windows使用的gbk


QString str = "汉字"    // qt不知道"汉字"到底是什么编码, 就会使用Latin - 1编码, 转换成Unicode并存到 QString



所以一般的方法是

QString str = QString::fromLocal8Bit("汉字");  告诉qt 使用的local的编码, 而local默认编码是gbk
所以就会使用gbk编码, 转换成Unicode并存到 QString



vc2010 新加入了(注意不是vs2010)

#pragma execution_character_set("utf-8")  指示char的执行字符集是UTF-8编码。



故只需要加这一句, 在编译源码的时候,会把"文本" 的编码设置为 utf-8,而不是默认的gbk乱码不会出现.



但使用了#pragma execution_character_set("utf-8")

char[]   却会变成乱码

char s[100] = "我是汉字";//s乱码
strcat_s(s, "我是汉字");//s乱码

解决方法:

strcpy_s(s, QString("我是汉字").toLocal8Bit().data());  将"我是汉字"转换成GBK的编码.



故猜测原因:

char s[100] = "我是汉字";//s乱码
strcat_s(s, "我是汉字");//s乱码

其中的"=" "strcat_s"  是按照local的编码来转换的,也就是GBK.

所以当使用了execution_character_set("utf-8")时, 
strcat_s(s, "我是汉字")  就是把utf-8的 "我是汉字"  按照gbk的编码 转换给s,故出现乱码









 

你可能感兴趣的:(qt)