LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3897|回复: 4

Qt编程中的中文显示问题

[复制链接]
发表于 2004-10-14 15:19:57 | 显示全部楼层 |阅读模式
我刚开始学习Qt+KDevelop编程,先照Qt的指南作了个Hello World, 接着试着修改QLabel("你好",...);结果出来的是乱码。我的KDE能够正确显示中文,那么错误在哪里呢?


David
发表于 2004-10-14 23:57:17 | 显示全部楼层

回复: Qt编程中的中文显示问题

最初由 davidlee62 发表
我刚开始学习Qt+KDevelop编程,先照Qt的指南作了个Hello World, 接着试着修改QLabel("你好",...);结果出来的是乱码。我的KDE能够正确显示中文,那么错误在哪里呢?


David


其实,这是刚开始qt编程的几乎都会遇到的问题,而且也有很多文章回答了这个问题的。

这主要是因为文字编码的问题,qt显示用的是Unicode,而我们输入的中文一般都是gbk的,直接显示自然就是乱码了。

因此,我们需要进行编码的转换。Qt提供了一个类专门解决这类问题,叫做QTextCodec。我们可以这样使用:
  1. #include <qtextcodec.h>
  2. ...
  3. ...
  4. QCString chinese_string="你需要显示的文字“;
  5. QTextCodec *codec=QTextCodec::codecForName("gbk");
  6. QString string=codec->toUnicode(chinese_string);
  7. ...
  8. ...
复制代码

这样转换了之后,使用string这个QString就可以正常显示了!同时,这个方法对输入的中文字符的处理一样有效。
 楼主| 发表于 2004-10-15 15:04:19 | 显示全部楼层
谢谢 smartyin。我回去试试。
发表于 2004-10-15 16:21:56 | 显示全部楼层
呵呵,不用这么客气吧!不过,建议你把Qt文档的关于i18n和QTextCodec类的部分好好看看,其实,那上面已经说的很明白的。
发表于 2007-5-8 20:59:26 | 显示全部楼层
不要说我挖墓啊,碰到同样问题,不过不太一样。
我用的是pyqt,不懂c的。
我用QFile类打开一个本地的文件,然后用QTextStream(importfile).read()读取内容,然后把内容setText到一个textEdit里,如果这个文件是utf8编码的,一点问题没有,如果gb编码的,就不行了,这些都是预料之中的,问题是不知道打开gb文件后该怎么转码,显示到textEdit里面的内容正确呢?
因为不懂c,所以最好能够用python的语法,或者讲下实现过程也好。多谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表