问题很简单你用过\260
最有可能在 Ansii C 字符串中(const char []
)。在这种情况下,Qt 使用了一些codec http://qt-project.org/doc/qt-5.0/qtcore/qtextcodec.html将其转换为 Unicode 字符。由于某种原因,当您更改 Qt 版本时,默认编解码器已更改,这就是它停止工作的原因。
无论如何,你的做法是错误的。您不应该使用依赖于编解码器的 C 字符串(通常这会导致此类问题)。您可以将 QChar const 定义为QChar(0260)
或者最好的方法是使用tr
并提供翻译。
最好如果您给出带有度数字符的字符串的代表性示例,那么有人将为您提供最佳解决方案。
Edit:
我会像这样更改你的代码:
const QChar degreeChar(0260); // octal value
return QString("%1%3 %2%3").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0').arg(degreeChar);
或添加将处理这一行的翻译:
return tr("%1degree %2degree").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0');
请注意,无论当前语言环境是什么,都只需始终添加该行的翻译。