2012-01-02 455 views
16

在我的Qt应用程序中,我的源代码文件被编码为UTF-8。对于下面的代码...将Qt默认编码设置为UTF-8

QMessageBox::critical(this, "Nepoznata pogreška", "Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?", QMessageBox::Yes, QMessageBox::No); 

...当我表明,消息框,字符“S”将不会被显示为“S”,但一些奇怪的事情。这是因为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

http://stackoverflow.com/questions/29485602/qt-convert-unicode-entites – trante 2015-04-07 10:13:54

回答

28
+0

呵呵,现在感觉很愚蠢:DI不知道它存在;)谢谢:) – xx77aBs 2012-01-02 22:18:36

+1

不要假设像这可以为qt5完成?似乎setCodecForCStrings已被删除... – ntzrmtthihu777 2014-08-07 03:18:50

+2

恐怕我不能肯定地回答,因为我不再使用任何使用Qt的东西。我的猜测是Qt5会假定所有的源文件都是UTF-8编码的(而不是Latin-1),这将解释为什么他们删除了这个文件。如果您遇到类似问题,那么我只需要使用您最喜欢的程序员的文本编辑器(例如Notepad ++)来检查所有源文件是否使用UTF-8编码? – 2014-09-24 12:18:24

0

关于“猜测”“Qt5假定所有源文件都是UTF-8编码”:Thiago Macieira解释了由Qt的开发人员做出的决定here

根据文档,该假设可以通过QT_NO_CAST_FROM_ASCII被禁用。

相关问题