0

我在非 unicode 版本中使用 wxMac 2.8。我尝试将带有变异元音“ü”的文件读取到 wxtextctrl。当我这样做时,数据被解释为当前编码,但它是一个多字节字符串。我将问题缩小到这个:

text_ctrl->Clear();
text_ctrl->SetValue("üüüäääööößßß");

这是结果:

üüüäääööößßß</p>

请注意,字符数增加了一倍 - 在 gdb 中打印字符串显示“\303\274”,并且每个原始字符都类似。在 textctrl 中键入“ü”或类似名称是没有问题的。我尝试了各种 wxMBConv 方法,但结果始终相同。有没有办法解决这个问题?

此致,

4

2 回答 2

0

听起来您的文本编辑器(用于程序源代码)与正在运行的程序的编码不同。

例如,假设您的文本输入控件和程序的其余部分(正确地)使用 UTF-8。现在,如果您的文本编辑器使用其他编码,那么在屏幕上看起来不错的字符串实际上将包含垃圾字节。

假设您能够帮助创建一个纯 UTF8 世界,那么您应该:

1) 使用转义符将 UTF-8 直接编码为字符串文字,例如“\303”或“\xc3”。这很烦人,但这意味着您不必担心您的文本编辑器(或其他开发人员的编辑器设置)。

2) 然后检查程序是否到处都在使用 UTF-8。

于 2013-05-12T10:57:36.050 回答
0

如果您使用 7 位 ASCII 以外的任何内容,则必须使用 wxWidgets 的 Unicode 构建。只是帮自己一个忙,然后改用它。如果您有太多为 wxWidgets 2.8 和更早版本的“ANSI”构建编写的现有代码,并且无法使用 Unicode 构建进行编译,请使用 wxWidgets 2.9 代替它将编译的地方 - 并按预期工作。

于 2013-05-12T12:38:06.303 回答