我学习Qt,Qt5.1,我在重音方面遇到了编码问题。我用葡萄牙语编写带有输出的程序,并且总是要使用重音。可以通过以下代码证明该问题:
\#include < QDebug>
\#include < QTextStream>
\#include < QString>
int main(){
QTextStream out(stdout);
qDebug() << "Olá Mundo!";
out << QString("Olá Mundo!") << endl;
out << "Olá Mundo!" << endl;
}
输出结果为:
OláMundo!
OláMundo!
OláMundo!
第三个“OláMundo”错了。我总是必须使用QString来正确打印输出,还是有一些方法可以使最后一行正确打印(没有Qstring声明)?为什么qDebug会正确显示?
答案 0 :(得分:1)
您可以将编解码器设置为ISO 8859-1(out.setCodec("ISO 8859-1")
)。
然后你可以写out << "Olá Mundo!" << endl;
但是out << QString("Olá Mundo!") << endl;
将不再起作用。这只是因为QTextStream运算符&lt;&lt;(const char * string)需要ISO 8859-1中的字符串和运算符&lt;&lt;(const QString&amp; string)UTF-8中的QString。 QTextStream的默认编解码器是UTF-8。
qDebug将字符串内部转换为UTF-8。这就是你可以写qDebug() << "Olá Mundo!";