项目好,我们有一个代码:Qt的utf8编码失败在Windows,但在Linux上工作
return QString("%1\u00B0%2' %3").
arg(std::abs(data.longitude)/60).
arg(std::abs(data.longitude) % 60).
arg(data.longitude > 0 ? 'E' : 'W');
此字符串输出对象在QTableView中的细胞。问题在于它只能在Linux机器上正确打印度数符号,但是在打印方形的窗口上打印度数符号。如何解决它?
Qt 4.8,Windows XP。 Linux(任何发行版)。
UPD:
我们已经尝试任何事情,但QString::fromLatin1()
只帮助了一点:在Windows现在打印正确程度的标志,而在Linux上,我们有额外的符号:
A°
因此,目前我们有这样的“解决方案”:
return QString("%1%2%3' %4").
arg(std::abs(data.longitude)/60).
#if defined(Q_OS_WIN)
arg(QString::fromLatin1("\u00B0")).
#else
arg("\u00B0").
#endif
arg(std::abs(data.longitude) % 60).
arg(data.longitude > 0 ? 'E' : 'W');
这是非常丑陋的,但它的工作原理。我很欣赏任何其他修复。
由于字符串字面值是UTF8,所以应该使用'fromUtf8'。你为什么不呢? – 2015-03-13 14:32:55