在实例化QApplication对象后,我正在失去打印unicode字符的能力.
从以下代码中包含所有需要的库:
int main(int argc, char** argv)
{
qDebug() << "aeiou áéíóú";
QApplication app(argc, argv);
qDebug() << "aeiou áéíóú";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
aeiou áéíóú
aeiou áéÃóú
Run Code Online (Sandbox Code Playgroud)
我该如何修复这种奇怪的行为?我需要能够打印unicode字符串(以UTF-8格式).
Hos*_*ork 13
2017更新:2011年的答案适用于Qt 4.在Qt 5中,文本编解码器被淘汰,所有源都预计为UTF-8.请参阅"源代码必须是UTF-8,QString需要它"
当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;
}
Run Code Online (Sandbox Code Playgroud)
看看是否能解决您的问题.
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |