由于我们已将所有源文件和头文件转换为Unicode,我们在使用德语变音符时遇到了问题。源代码中一切正常,但QLabel和其他图形用户界面组件显示的变音符却是乱码。
ISO-8859-1格式的源文件可以正常工作,但在OSX和Windows之间切换时会出现问题。
在项目文件中需要设置什么吗?
环境:Qt 4.7 with Qt Creator 2.3.0,使用MinGW在Windows XP SP3上开发。
由于我们已将所有源文件和头文件转换为Unicode,我们在使用德语变音符时遇到了问题。源代码中一切正常,但QLabel和其他图形用户界面组件显示的变音符却是乱码。
ISO-8859-1格式的源文件可以正常工作,但在OSX和Windows之间切换时会出现问题。
在项目文件中需要设置什么吗?
环境:Qt 4.7 with Qt Creator 2.3.0,使用MinGW在Windows XP SP3上开发。
尝试调用
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
在创建完QApplication
对象之后,如果您使用tr()
函数,则需要使用QTextCodec::setCodecForTr
函数。
编辑:这仅适用于Qt 5版本之前的Qt版本。更新的Qt版本期望源文件转换为UTF-8编码。
tr()
,需要设置 QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
,否则无法正常工作。然后我会很高兴地接受你的答案。 - atamanromanQByteArray::fromPercentEncoding()
和QByteArray::fromBase64()
能够处理编码的非ASCII字符,我必须首先调用QTextCodec::setCodecForCStrings()
和QTextCodec::setCodecForLocale()
。该系统的LANG
环境变量设置为en_US.UTF-8
。 - maxschlepzig我曾经遇到过类似的问题,于是决定在我的源文件中只使用7位ASCII字符,并安装一个QTranslator来创建umlauts。
由于应用程序需要被翻译成其他语言,因此这似乎是避免编码问题的好方法。