1.总结---tr()和QTextCodec对象
1. 关于Qt 中的tr()函数-------http://tscsh.blog.163.com/blog/static/200320103201310213312518/
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
- (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
- (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:
- (2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
- (2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包);
注意哦,如果你正在用tr包裹中文字符,却不属于(2b),那么,这是个信号:
- 你在误用tr
- 你需要的是QString,而不是tr
tr 是做什么的?下面二者的区别是什么?
QString text1 = QObject::tr("hello"); QString text2 = QString("hello");tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。
tr是经过多级函数调用才实现了翻译操作,是有代价的,所以不该用的时候最好不要用。
----------------------意味着,当你使用tr()时,就需要实现提供语言包,比如这样的代码
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//在代码中可以使用中文
2. QTextCodec对象---http://my.oschina.net/michaelbirdliu/blog/12649
//关于QTextCodec对象: // 该对象主要用于非Unicode编码数据与Unicode编码数据之间的转换,例如: //假设现在有一个采用俄国的KOI8-R编码格式的字符串encodedString,现在将它转换成Unicode
QByteArray encodedString = "Hello";
QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); QString string = codec->toUnicode(encodedString);
//上述操作完成后,string里存储的就是Unicode编码的字符串了 //相反的过程:
QTextCodec *codec = QTextCodec::codecForName("UTP-8");
QByteArray encodedString = codec->fromUnicode(string); //UTF-8是中文编码
//操作完成后,encodedStirng里存储的就是从Unicode转换来的UTF-8编码的字符串了 //上述代码也实现了从KIO8-R到UTF-8的转换
1.总结---tr()和QTextCodec对象的更多相关文章
- sql server查询可编程对象定义的方式对比以及整合
本文目录列表: 1.sql server查看可编程对象定义的方式对比 2.整合实现所有可编程对象定义的查看功能的存储dbo.usp_helptext2 3.dbo.helptext2的选择性测试 4. ...
- SHELL脚本攻略(学习笔记)--2.5 tr
tr主要用于映射结果集.压缩和删除字符.我个人感觉特别有用,特别是压缩连续空格(空行)为一个空格(空行),让不规则的信息变得规则. 2.5.1 tr映射 tr [options] [SET1] [SE ...
- SpringMVC数据绑定全面示例(复杂对象,数组等)
点击链接查询原文 http://www.xdemo.org/springmvc-data-bind/ 已经使用SpringMVC开发了几个项目,平时也有不少朋友问我数据怎么传输,怎么绑定之类的话题,今 ...
- SHELL脚本--tr命令用法和特性全解
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 简介 tr主要用于将从标准输入读取的数据进行结果集映射 ...
- jquery动态增加或删除tr和td【实际项目】
难点: (1)动态增加.删除tr和td (2)每天tr和td都有下标,且下标要动态变化, (3)tr和td为什么下标不能随便写,原因是此处需要把所有tr中的数据以list的形式发送到后台对象中,所有每 ...
- Unity创建或克隆对象 Instantiate()
//需要创建对象 GameObject prefab; //创建对象的规定位置或父物体 Transform tr; //创建出对象 Instantiate(prefab); //创建对象,并设定位置和 ...
- HTML-DOM常用对象的用法(select/option/form/table)
HTML DOM 常用对象: 它对常用HTML元素操作的简化. Select对象 它代表页面上的一个select元素,常用属性有: select.value ——当前选中项的value ,没有valu ...
- qt 总结
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" ...
- QString::QString 中文乱码
QString::QString 中文乱码 处理方法: 1. QString str = QString::fromLocal8Bit("中文"); // vs2008 vs200 ...
随机推荐
- Redis 1:简介
导读:在今日开讲的项目中,用到了redis数据库.老听大家在说,我都不知道是个啥玩意儿.然后这两天在准备知识分享的事儿,我先大概了解了解,然后讲的时候,能有点共鸣.所以,本篇博客,是在自己跟读完MVA ...
- 【.NET】单例模式标准写法
public sealed class Singleton { private static Singleton instance = null; static readonly object pad ...
- gulp.spritesmith修改px为rem单位
移动端开发中,使用gulp.spritesmith进行小图sprite并生成样式,但由于spritesmith默认是以px为单位,所以就把插件的内容修改了下让生成rem单位并且能把background ...
- 10 Code Coverage Tools for C & C++
Code coverage is a measure used in software testing that describes the degree to which the source co ...
- 021ARM处理器工作模式
1.User模式:usr,普通应用程序运行的模式: 2.FIQ模式:fiq,快速中断模式,当一个程序正在运行时,突然产生一个中断,而且这种中断属于快速中断,那么将进入快速中断模式下运行: 3.IRQ模 ...
- Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题
本文主要介绍音视频通话中收到第一帧图像后视频一直卡住的问题,文章来自博客园RTC.Blacker,转载请说明出处. 因为苹果AppStore要求从2015年2月1日开始所有所有上架App必须支持arm ...
- 在centos下安装django
这里有一个不错的Django的学习资料.先收藏一下,以备后用.谢谢 http://www.ziqiangxuetang.com/django/django-install.html 在centos下安 ...
- Django搭建及源码分析(三)---+uWSGI+nginx
每个框架或者应用都是为了解决某些问题才出现旦生的,没有一个事物是可以解决所有问题的.如果觉得某个框架或者应用使用很不方便,那么很有可能就是你没有将其使用到正确的地方,没有按开发者的设计初衷来使用它,当 ...
- HTML5应用之时钟
利用HTML5的Canvas API可以完成我们以前意想不到的动画效果,以前我们想在网页上放置一个时钟,需要先用flash工具制作一个钟表,并写上复杂的JavaScript代码,然后载入到页面中.而H ...
- VBA添加表格
Sub 添加表格() ' If MsgBox("要为所有表格添加列吗?", vbYesNo + vbQuestion) = vbYes Then To ActiveDocument ...