在我的Qt应用程序中,我的源代码文件被编码为UTF-8。对于以下代码...
QMessageBox::critical(this, "Nepoznata pogreška", "Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?", QMessageBox::Yes, QMessageBox::No);
...当我显示该消息框时,字符“š”不会显示为“š”,而是显示为奇怪的东西。这是因为Qt将所有C字符串转换为使用LATIN-1编码。为了解决这个问题,我一直在使用:
QMessageBox::critical(this, QString::fromUtf8("Nepoznata pogreška"), QString::fromUtf8("Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?"), QMessageBox::Yes, QMessageBox::No);
有没有办法摆脱对QString::fromUtf8()
的所有电话?
答案 0 :(得分:29)
答案 1 :(得分:2)
setCodecForCStrings()
已被弃用。
请改为尝试,
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
它对我有用。
答案 2 :(得分:0)
关于"猜测" " Qt5假设所有源文件都是UTF-8编码":Thiago Macieira解释了Qt开发人员here的决定。
根据文档,可以使用QT_NO_CAST_FROM_ASCII
禁用该假设。