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