我使用下面的代码在点击按钮时显示中文文本,它在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);
感谢任何帮助。 感谢
答案 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没有给我正确的结果。 感谢。