1

我使用 Qt5.1 学习 Qt,并且在重音方面遇到了编码问题。我用葡萄牙语编写带有输出的程序,并且总是必须使用重音符号。该问题可以在以下代码中演示:

\#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”是葡萄牙语的Hello World。

输出是:

奥拉世界!

奥拉世界!

奥莱蒙多!

这第三个“Olá Mundo”是错误的。我总是必须使用 QString 正确打印输出,或者有什么方法可以正确打印最后一行(没有 Qstring 声明)?为什么 qDebug 显示正确?

4

1 回答 1

1

您可以将输出的编解码器设置为 ISO 8859-1 ( out.setCodec("ISO 8859-1"))。然后你可以写out << "Olá Mundo!" << endl;But then out << QString("Olá Mundo!") << endl;won't function了。这只是因为 QTextStream operator<<(const char * string) 需要 ISO 8859-1 中的字符串,而 operator<<(const QString & string) 需要 UTF-8 中的 QString。QTextStream 的默认编解码器是 UTF-8。

qDebug 在内部将字符串转换为 UTF-8。这就是为什么你可以写qDebug() << "Olá Mundo!";

于 2013-08-25T01:51:46.907 回答