本文共 803 字,大约阅读时间需要 2 分钟。
为了彻底弄清QT以及MSVC的工作原理, 下面用4个例子来实战
笔的UTF-8的表示为\XE7 \XAC \X94,GB2312的表示为\XB1 \XCA1.
QString string1("笔"); qDebug() << string1; qDebug() << string1.toUtf8() ; qDebug() << string1.toLocal8Bit() ;
2.
代码同上, 我们在文件头部加上
#pragma execution_character_set("utf-8")
3.
QString string("笔"); qDebug() << FindWindow(NULL, "笔"); qDebug() << FindWindow(NULL, string.toUtf8()); qDebug() << FindWindow(NULL, string.toLocal8Bit()); 4. 代码同上, 我们在文件头部加上 #pragma execution_character_set("utf-8")
实验结果
有几点说明.
1. 由于我们的QTCreator里面BOM是Adding IF Encoding is UTF-8, 所以compiler input也会是UTF-8.
2. 当我们在C++头部文件加入#pragma execution_character_set("utf-8")时, compiler output会是UTF-8, 否则默认是GB2312
3. 当toUtf8()不能解释时会用EF BF BD来替换
4. 当toLocal8Bit()不能解释时会用3F 来替换
5. FindWindow中的名字要跟系统中窗口的名字比较, 而系统的窗口的名字编码为GB2312.
转载地址:http://hvxdi.baihongyu.com/