我在非unicode版本中使用wxMac 2.8。我尝试将带有变异元音“ü”的文件读取到wxtextctrl。当我这样做时,数据被解释为当前编码,但它是一个多字节字符串。我将问题缩小到了这个范围:
text_ctrl->Clear();
text_ctrl->SetValue("üüüäääööößßß");
结果如下:
üüüäääööößßß
请注意,字符数加倍 - 在gdb中打印字符串显示“\ 303 \ 274”,并且每个原始字符类似。在textctrl中键入“ü”或类似名称是没有问题的。我尝试了各种wxMBConv方法但结果总是一样的。有办法解决这个问题吗?
致以最诚挚的问候,
答案 0 :(得分:0)
听起来您的文本编辑器(用于程序源代码)与正在运行的程序的编码不同。
例如,假设您的文本输入控件和程序的其余部分(正确地)使用UTF-8。现在,如果您的文本编辑器正在使用其他编码,那么在屏幕上看起来很好的字符串实际上将包含垃圾字节。
假设您有能力帮助创建一个纯UTF8世界,那么您应该:
1)使用转义将UTF-8直接编码到字符串文字中,例如“\ 303”或“\ xc3”。这很烦人,但这意味着你不必担心文本编辑器(或其他开发人员的编辑器设置)。
2)然后检查程序是否在任何地方使用UTF-8。
答案 1 :(得分:0)
如果使用除7位ASCII之外的任何内容,则必须使用wxWidgets的Unicode版本。只是帮自己一个忙,然后切换到它。如果您为wxWidgets 2.8及更早版本的“ANSI”构建编写的现有代码太多而且不使用Unicode构建编译,请使用wxWidgets 2.9而不是编译它 - 并按预期工作。