QML/C++问题中的Unicode
Unicode in QML/C++ issue
在QML中,我有一个TextArea。当我将此TextArea的文本属性设置为"ÆæÅ"时,程序运行时会显示"\198\æå"。
我还通过一些函数获取文本,这些函数我想在同一个TextArea中显示,但随后"ÆÅ"显示为"??"。
字符串来自这个C++函数:
QString Tts::morseToChar(QString morse)
{
if(morse == ".-") return "A";
else if (morse == "-...") return "B";
...
...
else if (morse == ".-.-") return "Æ";
else if (morse == "---.") return "Ø";
else if (morse == ".--.-") return "Å";
}
返回字符串被添加到QML字符串:
property string ttsChar: ""
ttsChar += ttsSpeak.morseToChar(morse)
_ttsTextArea.text += ttsChar
所有文件都保存为UTF-8。
我错过了什么转换来让它发挥作用?
尝试返回通用字符名,而不是utf-8表示。
QString Tts::morseToChar(QString morse)
{
if(morse == ".-") return "A";
else if (morse == "-...") return "B";
...
...
else if (morse == ".-.-") return u8"u00C6";
else if (morse == "---.") return u8"u00D8";
else if (morse == ".--.-") return u8"u00C5";
}
您可以在这里搜索通用字符名,这是找到Æ(\00C6)、PXS(\00D8)和Å(\0OC5)的名称的地方。
有关为什么在c++源文件中不允许使用utf-8表示形式的更多信息,请参阅此答案。
char *
中QStrings的默认构造函数使用fromAscii()
函数。
很可能你的字符串实际上是用UTF-8编码的,所以有两件事可以尝试:-
a:返回宽字符数:
return L"Æ";
b: 或者,从UTF8 显式转换
return QString::fromUtf8("Æ");
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- 在C++中读取 unicode 输入时出现问题
- 关于C++中完整 unicode 的基本问题
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- C Unicode UTF-8解码字符的问题
- Unicode 字符问题/转换参数
- Unicode 问题在 C++ 而不是 C 中
- QML/C++问题中的Unicode
- 转换为 Unicode 时提升属性树问题
- Unicode转换问题
- Crypto++多字节/unicode问题
- 用unicode文件名保存文件的问题-如何以跨平台的方式正确保存UTF-8文件名
- c++中unicode字符的可视化编译问题
- Unicode 程序中的 C++ Wofstream 问题