QTextCodec中的setCodecForTr等终于消失了 (Qt5)
- 在Qt4中,国内很多新手都喜欢——不分青红皂白地使用如下3行代码
QTextCodec::setCodecForTr(...) QTextCodec::setCodecForCStrings(...) QTextCodec::setCodecForLocale(...)
尽管之前零零散散写过一点这方面的内容,比如
QString 与中文问题
Qt中translate、tr关系 与中文问题
Qt国际化(源码含中文时)的点滴分析
但是,敢死队员还是一批一批的 ... 让人少多有些无奈
症结?
在国内,之所以用很多人用这3行代码,是因为他们在源代码的const char*这种窄字符串中使用了中文。
然后,发现。不对啊,咋全是乱码呢?于是上网搜索,发现其他人用的这3行代码
于是,加上试试。发现:在自己的当前环境下(固定系统、固定地区语言设置、固定编译环境)还真的没有乱码了。
于是乎?完全不考虑那3行代码的作用了,反正自己能用就行了,管它什么副作用呢!!
Qt5
在Qt5中,这个问题终于不复存在了,因为
这两个函数
QTextCodec::setCodecForTr(...) QTextCodec::setCodecForCStrings(...)
被直接去掉了。
这样一来,受影响的直接是如下代码了:
QString s1 = "我是中文"; QString s2("我是中文"); QString s3 = QObject::tr("我是中文")
好消息/坏消息?
坏消息:
现在Qt5中尽管去掉了setCodecXXX这两个函数,但是默认编码还是latin1。如果你要想使用
"我是中文"
这样的字符串,必须自己使用QTextCodec或这QString::fromXXX 这种东西进行转换
好消息 是:
Qt5发布之时,默认将会是utf8编码,完全可以将你从Qt编码问题解放出来。
坏消息,如果使用的是 MSVC2005/2008/2010,可能无法使用utf8编码,于是
下面的代码
QString s1 = "我是中文"; QString s2("我是中文"); QString s3 = QObject::tr("我是中文")
将不会工作。
- 因为从MSVC2005起,你无法给编译器设置字符串要使用的编码。尽管2003之前,也无法设置,但是它会遵循源码文件的编码。而2005就自作聪明了,即使你源码文件保存成不带BOM的utf8,它都会试图帮你转换一下。
好消息是什么呢?
如果你在Windows下,且使用的是MinGW,那么只要你将源码文件保存成utf8,前面的代码将直接可以工作(无须其他设置)
如果你在其他平台了,那么应该都默认是utf8文件。同样无须进行设置。
好消息
如果你的编译器支持C++11,那么,你可以直接使用
QString s = u8"我是中文";
坏消息
主流编译器还都不怎么支持C++11
参考
http://codereview.qt-project.org/#change,14999
http://codereview.qt-project.org/#change,14626
QTextCodec中的setCodecForTr等终于消失了 (Qt5)相关推荐
- 王者荣耀android看不见iOS,王者荣耀转区功能来了!iOS和安卓这个限制,终于消失了...
原标题:王者荣耀转区功能来了!iOS和安卓这个限制,终于消失了 大家好,我是波老师.今年国内外手机厂商们高产似母猪,新手机出得勤快,一波接一波.虽然波老师暂时没有换新手机的打算,但身边的朋友有啊.这人 ...
- Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout
Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout 1. 梯度消失和梯度爆炸 在使用pytorch中的序列化 容器之前,我们 ...
- unity 渐变消失_Shader Forge中怎么调整time渐变消失的间隔
求助 显示全部标签 搜索中出现以下关键词标签即可被搜索引擎找到 楼主可在左边的[标签]按钮中添加 希望搜索结果同时满足多个条件,可用空格隔开 求助 Shader Forge中怎么调整time渐变消失的 ...
- Win7中右下角“小喇叭”声音图标消失的解决方法?(已解决)
Win7中右下角"小喇叭"声音图标消失的解决方法?(已解决) 1.打开任务管理器. 2.右键explorer.exe选择右键结束. 3.在按ctrl+shift+Esc,或者用al ...
- 关于网络连接中WiFi连接选项突然消失的解决方法(Win10)
电脑开机之后找不到WiFi,也就是网络连接中WiFi连接选项突然消失的现象我已经遇到了好几次,甚至有一次上网上到一半突然就断了,发现WiFi连接选项消失了.这种情况重启一下电脑通常就能恢复,但问题其实 ...
- 深度学习中的激活函数与梯度消失
转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...
- idea中右侧的Maven框消失了
我掉 芭比Q了 idea中右侧的maven框居然没了 消失不见了 跟一束烟似的 没了 解决(网上找的)
- 美国如果把根域名服务器封了,中国会从网络上消失?
点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...
- yml避坑,yml配置使用map,如果key中包含某些符号会消失不见
在项目中有时候需要在yml配置文件中配置map,但是有些符号如果使用在map的key中,这些符号就会消失.下面看一下演示: 配置文件: local:map:'111|222': 1 然后通过配置类读取 ...
最新文章
- python 回归 显著_指南 | 量化选股with Python(2) 回归分析
- ES5-1 发展史、ECMA、编程语言、变量、JS值
- java 双重检查加锁弊端
- bufferedreader读取中文乱码_python之pandas模块关于csv文件乱码问题解决
- 小型elf Hello,World程序
- EasyUi之datagrid常见使用
- pytorch得到中间层输出
- 【二分法】计蒜客:切割钢管
- 以后装个云集群和云节点啥的太简单了(ubuntu)
- 任正非谈鸿蒙系统06 新闻,任正非首谈华为鸿蒙操作系统:很有可能比安卓和苹果还要快!...
- H5自适应简约浪漫婚礼邀请函HTML源码
- mysql的pdb文件在哪里_pdb是什么文件?pdb数据库文件怎么打开?
- 开源视频服务器软件MJPG-streamer研究
- 面向对象基础9(继承与继承语法)
- Ambari Server重启报错的解决办法
- TouTiao开源项目 分析笔记15 新闻详情之两种类型的实现
- 孕妈妈春季饮食有哪些忌讳 孕妈妈春天不适合吃的东西
- 计算机主板上的模块安装和拆,更换计算机主板上的内存模块插槽需要多少费用?...
- android自定义插值器_自定义缓动插值器,可在Android中实现有意义的动作
- 黄宇清 java_二面笔记 2015.9.19
热门文章
- 【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因
- 吴恩达的视频课程做成了文字版 ~~~
- 原子操作类AtomicInteger详解
- LinkedList 源码分析(JDK 1.8)
- 深度学习教程 TensorFlow and Deep Learning Tutorials
- JavaScript的5种调用函数的方法
- 编程之美-数组循环移位
- OpenCV中OrbDescriptorExtractor
- python+selenium中webdriver相关资源
- 深度学习目标检测系列:RCNN系列算法图解