QT嵌入式Linux中的中文文本显示?

时间:2011-12-07 13:02:33

标签: qt

我使用下面的代码在点击按钮时显示中文文本,它在Windows中正常工作,但是当我在嵌入式设备中尝试它时会显示一些垃圾值。 我正在使用“Batang”字体。 此字体安装在我的嵌入式设备中。

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
      QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
      QString qString1 = tr("鳶尾花");
      QByteArray byteArray = qString1.toUtf8();
      const char* cString = byteArray.data();
      QString qString2 = QString::fromUtf8(cString);
      QTextCodec::setCodecForTr(QTextCodec::codecForName(cString));
      ui->txtFirstname->setText(qString2);

感谢任何帮助。 感谢

3 个答案:

答案 0 :(得分:1)

尝试使用不同的编码,而不是UTF8取决于您将使用的字符。希望这会有所帮助。

* Guobiao is mainly used in Mainland China and Singapore. All Guobiao standards are prefixed by GB, the latest version is GB18030 which is a one, two or four byte encoding.
* Big5, used in Taiwan, Hong Kong and Macau, is a one or two byte encoding.
* Unicode, with the set of CJK Unified Ideographs.

阅读本文以获取更多信息:http://doc.qt.nokia.com/stable/codec-big5.html因为您使用的字符似乎是Big5编码字符 可以在此处找到教程:http://doc.qt.nokia.com/latest/qtextcodec.html

答案 1 :(得分:1)

添加行

QTextCodec::setCodecForTr(QTextCodec::codecForName(cString));

您可能认为以下过载:

  

QTextCodec * QTextCodec::codecForName ( const QByteArray & name ) [static]

会尝试为您提供的字节数组中的字符找到最佳编解码器。

但是,此函数会尝试查找名称最接近您提供的值的编解码器,因此您必须执行类似

的操作
QTextCodec::setCodecForTr(QTextCodec::codecForName("Big5"));

代替。

你试过遗漏那条线吗?无论如何,您已经将文本编解码器设置在上面几行。

答案 2 :(得分:1)

我决定使用:

 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));

Big5没有给我正确的结果。 感谢。