• 5798阅读
  • 8回复

[提问]请教一个问题,程序在没有Qt机器上的运行问题(汉字问题) [复制链接]

上一主题 下一主题
离线okk12345
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-17
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
我的.exe +.dll在没有qt的环境下,汉字运行为乱码。在有Qt的情况下,汉字正常,为什么?

我在main()函数里添加了
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
  //QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
}

在别处运用tr("汉字")。

在安装了qt的机器上汉字显示正常。没有Qt的显示为乱码,为什么?
离线feitian542

只看该作者 1楼 发表于: 2008-11-17
估计是缺少相应的字体库,发布的时候是不是要把字体库也一起发布
离线okk12345
只看该作者 2楼 发表于: 2008-11-17
楼上的兄弟能否在说的详细点,第一次干这个。我的所有汉字都写在tr(" ")函数里,比如  tr("汉字 "),这样写的。我在windows下,用gcc编译的。字符怎么加到程序里,是否还要修改。pro文件
离线marslee_suc
只看该作者 3楼 发表于: 2008-11-17
你可以看一下QT的帮助,里面语言的部分说的很详细
说有的汉字写在tr()中了也不能自动的给你翻译,还有一个函数是fromLocal8Bit 你可以实验一下
还有就是你机器上有你说的字体么?
离线vrcats
只看该作者 4楼 发表于: 2008-11-18
没有Qt的那台测试机上别的中文程序运行正常吗?
离线okk12345
只看该作者 5楼 发表于: 2008-11-18
在没有Qt的机器上测试别的程序,中文正常。我看了几个例子,他们都是连字体库一起发布,我没用,也需要加上么?
离线vrcats
只看该作者 6楼 发表于: 2008-11-18
试试看加上有没有改善了,按理说不应该有影响
离线okk12345
只看该作者 7楼 发表于: 2008-11-18
谢谢各位,我搞定了,我用

QTextCodec *locale_codec = QTextCodec::codecForLocale();
    if (!locale_codec) {
        QMessageBox::critical(0, "启动失败", "取本地编码类型失败");
        return false;
    }
    QTextCodec::setCodecForCStrings (locale_codec);
  QTextCodec::setCodecForTr (locale_codec);

代替了

/*
  QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
  */

他就显示正确了,希望不要出现什么副作用。
离线hys97

只看该作者 8楼 发表于: 2009-05-04
学习中,一头雾水
快速回复
限100 字节
 
上一个 下一个