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

xx7*_*aBs 16 qt c-strings utf-8 character-encoding

在我的Qt应用程序中,我的源代码文件被编码为UTF-8.对于以下代码......

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

...当我显示该消息框时,字符"š"不会显示为"š",而是显示为奇怪的东西.这是因为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);
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱所有的电话QString::fromUtf8()

Sam*_*mer 29

您是否尝试过使用QTextCodec :: setCodecForCStrings(QTextCodec :: codecForName("UTF-8"))

  • 不要以为qt5可以做这样的事情吗?似乎 setCodecForCStrings 已被删除... (2认同)
  • 我担心我无法回答,因为我不再使用任何使用Qt的东西了.我的猜测是Qt5假设所有源文件都是UTF-8编码(而不是Latin-1),这可以解释为什么他们删除了这个.如果您遇到类似的问题,那么我只想检查所有源文件是否使用您喜欢的程序员的文本编辑器(例如Notepad ++)进行UTF-8编码? (2认同)