我想在文本中使用\u
转义序列,但转换现在似乎令人困惑。
据我所知\u
使用符号\uXXXX
,其中X
是十六进制数字,并在utf8中描述代码点?飞机吗?但utf8是一个可变长度编码,所以它不一定是4位数?
那么如何转换wxString[0] -> '\uXXXX'
sequece?我使用mb_str(wxConvUTF8)
还是什么?所有这些unicode转换的东西现在看起来真的让我感到困惑。
如何处理相反的转换?如果我收到'\ uXXXX'序列的输入,这是找到它们内联的正确方法,并转换为unicode字符输出?
答案 0 :(得分:1)
那么如何转换wxString [0] - > '为\ uXXXX'
你可以在wxWidgets v2.9.x中执行此操作
wxString x = L"\x014C";
const char* xbuf = (const char*)x.wc_str();
wxString y = wxString::Format("%s = \\u%02X%02X",x,xbuf[1],xbuf[0]);
wxMessageBox(y,"Unicode test");
产生这个:
注意在xbuf中访问字节的顺序。这不是跨平台的!这取决于字节在机器上的字中的存储方式。这就是为什么经常使用UTF8而不是UTF16。