博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT中文乱码深度剖析
阅读量:4042 次
发布时间:2019-05-24

本文共 803 字,大约阅读时间需要 2 分钟。

为了彻底弄清QT以及MSVC的工作原理, 下面用4个例子来实战

笔的UTF-8的表示为\XE7 \XAC \X94,GB2312的表示为\XB1 \XCA

1.

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/

你可能感兴趣的文章
秒杀系统
查看>>
使用Jsoup抓取页面的数据
查看>>
时间工具类
查看>>
mybatis foreach
查看>>
微信验证域名
查看>>
Java实现微信JS-SDK【一】配置篇
查看>>
java合成图片
查看>>
httpclient 4.3.2 post get的工具类
查看>>
taskExecutor使用
查看>>
微信朋友圈分享
查看>>
eclipse安装JAVA反编译插件
查看>>
ip限制
查看>>
IE6 png 透明
查看>>
列表拖动排序
查看>>
select实例,拼音检索
查看>>
Spring MVC @Transactional注解方式事务失效的解决办法
查看>>
js正则表达式限制文本框只能输入数字,小数点,英文字母
查看>>
Spring事务失效的原因
查看>>
mybatis获取数据库表字段名+数据
查看>>
使用springfox整合SpringMVC和Swagger
查看>>