QString的中文初步
来源:互联网 发布:网络工具软件有哪些 编辑:程序博客网 时间:2024/05/17 05:09
source:http://blog.csdn.net/fldx/article/details/6262172
初接触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 与中文问题
- 自定义Adapter与ListView
- Dojo DataGrid 控件的 onCellDblClick 事件的工作流程
- 在Linux/Fedora11下配置、编译和使用Kscope的心得体会
- Pull解析XML文件
- SetWinEventHook和SetWindowsHookEx的异同
- QString的中文初步
- jsp页面写java代码很卡问题
- windows 的鼠标事件(Event)
- C#对注册表编程的支持
- MySQL Proxy
- 国内外最全的asp.net开源项目
- 提高编程效率的技巧
- Fedora中安装和配置OpenSSH
- 全球机场三字代码查询工具