当我使用高达qt4.8(qt quick 1.1)为gui然后我成功地能够打印学位\260但是当事情升级到qt5及以上然后这停止了工作.我在网上搜索并找到许多相关的链接,如(http://www.fileformat.info/info/unicode/char/00b0/index.htm)我试过但没有帮助.我是否需要为usinf UTF格式包含一些库,否则问题就是其他问题.请一些帮助.该怎么办?
@Revised,这里描述了正在做什么.
首先,我将可打印语句存储在字符串中text.如在cpp函数中: -
sprintf(text, "%02d\260 %03d\260 ",latD, longD);
QString positionText(text.c_str());
return positionText;
Run Code Online (Sandbox Code Playgroud)
然后使用positionTextqml文件在窗口上显示.
所以,有人请回答我需要做什么才能获得学位?
谢谢.
你\260很可能在Ansii C-string(const char [])中使用的问题很简单.在这种情况下,Qt使用一些编解码器将其转换为Unicode字符.出于某种原因,当您更改Qt版本时,默认编解码器已更改,这就是它停止工作的原因.
无论如何你的方法是错误的.你不应该使用编解码器所依赖的C字符串(通常这会导致这种问题).您可以将QChar const定义为QChar(0260)或最佳方法是使用tr并提供翻译.
如果你给出具有度数字符的字符串的代表性示例,那么最好有人会为你提供最佳解决方案.
我会改变你的代码:
const QChar degreeChar(0260); // octal value
return QString("%1%3 %2%3").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0').arg(degreeChar);
Run Code Online (Sandbox Code Playgroud)
或添加将处理此行的翻译:
return tr("%1degree %2degree").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0');
Run Code Online (Sandbox Code Playgroud)
请注意,此行的此转换只需要始终不添加当前区域设置.