Qt当我们打印QChar初始化的中文字符时候乱码,代码如下:
QChar c = 0x4e2d;
QString str(c);
QChar mid = '中';
QString strMid(mid);
qDebug() << "str:" << str << endl
<< "strMid:" << strMid;
运行如下:
不是你想的吧,O(∩_∩)O哈哈~,很多人会疑惑,来我们看看它是怎么解码的。
①QChar c = 0x4e2d;
这里0x4e2d是‘中的unicode编码’,
如图网上在线字符转unicode编码工具,大家可以在线测试一波
字符与unicode编码互转结果
http://tool.chinaz.com/tools/unicode.aspx
注意转的时候0x改成\u
②我们再看看QChar mid = ‘中’;
这里‘中’采用的是gbk编码,值为d6d0,而它的unicode编码是4e2d
在线查看字符gbk内码
http://www.mytju.com/classcode/tools/encode_gb2312.asp
拿着gbk编码结果去解码unicode自然就无法正解了