QString的中文初步。
来源:互联网 发布:火狐 谷歌 知乎 编辑:程序博客网 时间:2024/06/05 17:22
初接触Qt的程序员,肯定为Qt不能正常输出中文感到郁闷,万能的Qt啊,你为什么连个中文都输出不好呢? 其实,Qt当初的设计有很好的前瞻性,QString内部的存储均是用unicode编码存储的。unicode为什么还不能输出正常的中文呢?
Qt是这样操作的,当你把一个字符串传给QString的构造函数,QString并不知道你这是以何种格式编码的字符串,所以在你没有指定前,它一般都是按照latin1来进行解码并重新编码成unicode,这样你原本的中文当然就被改的面目全非了。所以你必须要指定你源字符串的编码格式。
Qt提供了一个工具类,可以较好的处理这个问题。QTextCodec。
比如说你要把一个“我是一个中国人”转换成QString,怎么做呢?
首先,先构造出一个相应的QTextcodec来,Qt这一块己经用插件的方式给我们提供了一些常用的编码,中文,日文,韩文等。我们中文的最好是用GB18030字库。为什么?因为GB18030的字库全面兼容GB2312,而且里面包含了繁体字。
QTextCodec * codec =QTextCodec::codecForName("GB18030");
QString m = codec->toUnicode("我是一个中国人");
这就好了,这时打印一下m,怎么样,正常了吧。
网上不是有很多人说用什么:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
的吗?
其实,这和我介绍的方法是异曲同工的,我的方法是每个地方你都要去toUnicode一下,这样就特别烦。你在main函数里面加上上面3句只不过是把这个toUnicode全部自动做了一遍。。。。不过上面的三句话也有缺点,如果你的程序里面用到了好几种的编码格式。那还是用我上面的那种toUnicode吧。这样一来,大家就清晰多了吧。。。。
- QString的中文初步。
- QString的中文初步
- QT中文的 QString 与 char* 转换
- 包含中文的QString 转 char*
- QString中文路径乱码的问题
- QString中文显示问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString 与中文问题
- QString支持中文
- QString 中文问题
- QString 与中文问题
- QString 与中文问题
- 关于正则表达式获取FCKEditor控件上传图片地址
- TinyXML中部分函数的使用
- 【叶子函数分享二十七】根据日期得到星期的函数
- 入侵oracle数据库的一些技巧
- 线程函数
- QString的中文初步。
- android的sqlite导出及数据操作经验分享
- Crack Oracle Password
- 位域(位段)
- Windows Phone7 Image控件显示网络图片的两种方式
- 华为重生:转战消费品市场 转型多元制造商
- 网格模型中级一
- IT从业人员必看的10个论坛【转载】
- linux系统中数据类型的来源: