• 7799阅读
  • 4回复

新手求助:QT中文显示问题 [复制链接]

上一主题 下一主题
离线lvyinghe
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-05
— 本帖被 XChinux 执行加亮操作(2010-09-05) —
关键词: 中文字符ubuntu
想要在程序中显示中文。依照资料编写的代码满足如下条件:
头文件中包含#include<QtCore/QTextCodec>
包含语句 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
然后
QWidget *newWidget=new QWidget;
QLabellabel(newWidget);
[pre]label.setText(QObject::tr("你好!"));[/pre][pre]windows下的QT4中,能够正常编译,且界面能正常显示中文。[/pre][pre]Ubuntu平台中用QT打开在Windows编写的代码,编译正常,中文正常显示。[/pre][pre]但是在Ubuntu平台下写同样的代码,中文显示为乱码[/pre][pre]不知道在Ubuntu下如何做,才能使得写的中文字符正常显示???[/pre][pre][/pre][pre]附注:在Ubuntu平台的QT打开Windows下创建的文件时,需要选择一个GB18030或者一个GB2312的编码才可以正常显示中文。[/pre][pre][/pre]


谢谢各位大侠。我自己琢磨了一下,可能是我在写代码的时候的问题。Edit下有个select encode 选项。在写代码的时候,先选择gb18030或者2312,然后再输入中文。然后编译的程序就可以正常显示了。
[ 此帖被lvyinghe在2010-09-22 13:39重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2010-09-05
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb18030"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));

把这两个都加上吧。另外,你的源代码保存时也要保存成 GB18030的。

我个人一般都使用GBK(而非UTF-8)编码。以使gcc/mingw/vc下都容易编译。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线dbzhang800

只看该作者 2楼 发表于: 2010-09-05
引用楼主lvyinghe于2010-09-05 20:33发表的 新手求助:QT中文显示问题 :
想要在程序中显示中文。依照资料编写的代码满足如下条件:
头文件中包含#include<QtCore/QTextCodec>
包含语句 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
然后
QWidget *newWidget=new QWidget;
.......

程序中只有中文的话,还是蛮简单的,只要对 gb18030 和 utf-8 从概念上有点了解就行了。

再就是 gb18030 和 utf-8 都是 char * 的字节流,而QString是unicode

对于这个东西,我前些天整理过一次,http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html
离线paranoid
只看该作者 3楼 发表于: 2010-09-06
QString 内部采用的是Unicode。具体一点Windows下用的UCS2,Linux下用的UCS4

这个好像不对,linux下QString内部也是utf16
离线dbzhang800

只看该作者 4楼 发表于: 2010-09-06
引用第3楼paranoid于2010-09-06 20:57发表的  :
QString 内部采用的是Unicode。具体一点Windows下用的UCS2,Linux下用的UCS4
这个好像不对,linux下QString内部也是utf16


恩,你是对了,我犯迷糊了。想成linux和windows下 wchar_t 的区别了
快速回复
限100 字节
 
上一个 下一个