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 然后通过配置类读取 ...
最新文章
- 除了组件超配光伏效率还能如何提升?
- 从输入url到显示网页,后台发生了什么?
- 13走了,14来了,新的一年,新的开始。
- html5 去掉 li的样式,css li 去掉点的样式写法
- 手把手教你写C语言的动态库的开发
- 只导表前10条数据_【205期】面试官:数据量很大的情况下,对于分页查询你有什么优化方案吗?...
- Android复习11【service-音乐播放器、定时器、IntentService、ALDL使用】
- 极简版 卸载 home 扩充 根分区--centos7 xfs 文件格式
- linux怎样扩容目录,Linux系统下对目录扩容的方法介绍
- edge浏览器下载位置设置
- 2021上半年短视频及电商生态研究报告
- python 文件管理_python 文件操作
- 银河证券CIO唐沛来:部署ITIL服务流程,让时空穿梭
- VPC2007与VServer2005R2比较
- Linux 探索之旅 | 第五部分第七课:Shell 实现图片展示网页
- itellij jdk多重选择Class JavaLaunchHelper is implemented in both
- 基本排序算法(冒泡,选择(希尔),插入,快速,归并,堆,二分查找)
- 微信小游戏源码及H5开源小程序游戏源码1000套
- 上位机与欧姆龙PLC的Fins tcp通讯
- 关于Echarts官网httpsecharts.apache.org打不开的解决方案
热门文章
- 【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】
- 【Tools】怎样转载博客到CSDN博客(很实用)
- 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)
- Programming Computer Vision with Python (学习笔记四)
- 自己动手实现的 Spring IOC 和 AOP - 下篇
- JAVA学习篇--Servlet详解
- C# vs C++ 全局照明渲染性能比试
- Java内存访问重排序的研究
- 深度学习Deep Learning: dropout策略防止过拟合
- 自学计算机科学CS总结-by 要有光LTBL