将Qt默认编码设置为UTF-8

时间:2012-01-02 21:24:38

标签: qt utf-8 character-encoding c-strings

在我的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()的所有电话?

3 个答案:

答案 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禁用该假设。