在实例化QApplication对象后,我正在失去打印unicode字符的能力。
从以下代码中包含所有需要的库:
int main(int argc, char** argv)
{
qDebug() << "aeiou áéíóú";
QApplication app(argc, argv);
qDebug() << "aeiou áéíóú";
return 0;
}
我收到了这个输出:
aeiou áéíóú
aeiou áéÃóú
如何修复这种奇怪的行为?我需要能够打印unicode字符串(以UTF-8格式)。
答案 0 :(得分:13)
2017更新:2011年的答案适用于Qt 4.在Qt 5中,文本编解码器被删除,所有源都应该是UTF-8。见"Source code must be UTF-8 and QString wants it"
当Qt将char *
解释为字符串时,它使用文本编解码器。这是全局设置的,您可以选择您想要的项目:
https://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings
请注意,Qt的默认值是Latin-1,它可能在某个地方的QApplication构造函数调用堆栈中建立默认值。如果您在项目中全局使用UTF-8,则可以尝试:
int main(int argc, char** argv)
{
qDebug() << "aeiou áéíóú";
QApplication app(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
qDebug() << "aeiou áéíóú";
return 0;
}
看看是否能解决你的问题。