• 4951阅读
  • 2回复

[提问]请教一个中文跨平台的问题 [复制链接]

上一主题 下一主题
离线liujianboy
 
只看楼主 倒序阅读 楼主  发表于: 2007-05-02
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
按照一个帖子的方法写的如下一段代码:

#include <QApplication>
#include <QObject>
#include <QTextCodec>
#include <QPushButton>

int main(int argc, char **argv)
{
  QApplication app(argc, argv);

  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
  QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

  QPushButton a;
  a.setText(QObject::tr("按钮文字"));
  a.show();

  QPushButton b;
  b.setText(QObject::tr("Button text"));
  b.show();

  return app.exec();
}

在windows下可以正常显示两个按钮的文字,而把代码在linux下重新编译运行,中文的文字就显示不出来了,请问应该怎么解决?
离线scerzz

只看该作者 1楼 发表于: 2007-05-02
按我的理解
QT系统处理默认是按utf8处理的,也就是说不管你什么平台,只要你输入的数据都要正确的转换成UTF8后才能再在前台显示,
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
上面这个代码感觉不能这样写,因为tr()函数都是在代码中手动输入的字符,这些字符具体是什么依赖于你编写代码时文本的编码,如果你文本的编码是utf8,不使用上面的函数指定肯定在哪里都没问题,都可以显示中文,上面这句代码设置的编码应该是你的文本所使用的编码,比如在windows下建立的文档并在
tr()函数中输入了中文,应该写上
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
因为windows默认建立的文本文件为gbk编码的。

我在mingw32遇到个编码问题,不知道怎么回事,反正在windows用vc编译,linux下G++编译,文本编码用GBK使用上面一句编码,没有乱码出现
离线aaniao999

只看该作者 2楼 发表于: 2007-05-03
那个没办法的,我觉得是QT的问题,现在designer里面的中文都出不来,就别说自己的程序了。
我的是FC6,gb2312,gb18030,local8bit都试过,出来就是个框,你那也是这样马?
WIDNOWS下面好像字符的问题解决的比较简单点(就是不用太多想的意思)
快速回复
限100 字节
 
上一个 下一个