wxWidgets和转换为unicode代码点和从unicode代码点转换

时间:2012-03-28 08:26:18

标签: c++ unicode utf-8 wxwidgets

我想在文本中使用\u转义序列,但转换现在似乎令人困惑。

据我所知\u使用符号\uXXXX,其中X是十六进制数字,并在utf8中描述代码点?飞机吗?但utf8是一个可变长度编码,所以它不一定是4位数?

那么如何转换wxString[0] -> '\uXXXX' sequece?我使用mb_str(wxConvUTF8)还是什么?所有这些unicode转换的东西现在看起来真的让我感到困惑。

如何处理相反的转换?如果我收到'\ uXXXX'序列的输入,这是找到它们内联的正确方法,并转换为unicode字符输出?

1 个答案:

答案 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");

产生这个:

enter image description here

注意在xbuf中访问字节的顺序。这不是跨平台的!这取决于字节在机器上的字中的存储方式。这就是为什么经常使用UTF8而不是UTF16。