2

我正在使用 EVC++ 4 开发的应用程序在 Windows CE 5 上运行并且应该支持 unicode(AFAIK wchar_t 在 Windows 上使用 UTF-16,所以我正在使用它),所以我希望能够用“更具异国情调”来测试它人物。尤其是在 UTF-16 中使用 4 字节而不仅仅是 2 字节的字符。因此,我试图在文本编辑器中显示这些字符(atm 在我的带有 Windows XP 的台式 PC 上,而不是在嵌入式设备上)。

但我还没有做到这一点。作为一个例子,我选择了这个角色。就像这里提到的“MPH 2B Damase”应该支持这个角色。所以我下载了字体并将其放入 Windows\Fonts。我使用十六进制编辑器(只是为了确定)创建了一个文本文件,其中包含以下内容:

FFFE D802 DC00

当我用记事本打开它(应该支持 unicode,对吗?)并使用下载的字体时,它不会按预期显示 1 个字符,但这是 2:

˘Ü

我究竟做错了什么?:)

谢谢!

赫尼尔斯

编辑: 按照建议翻转 BOM 不起作用。在这种情况下,记事本(以及我尝试过的所有其他编辑器)显示两个正方形。有趣的是,如果我在这里复制两个方块(使用 firefox),我会看到正确的字符:


我也用 Komodo Edit 进行了尝试,结果相同。

使用 UTF-8 也无助于记事本。

4

3 回答 3

1

您的文本编辑器可能不喜欢 UTF-16。它可能假定为 ANSI 或 UTF-8。

尝试输入等效的 UTF-8:

0xF0 0x90 0xA0 0x80

这不会帮助您进行测试,但会确保您的字体没有问题。支持 UTF-16 的文本编辑器是Komodo Edit

于 2009-04-23T15:27:19.937 回答
1

如果你把字节顺序标记反过来会发生什么?

FEFF D802 DC00

(目前字节序列被解释为两个字符 U+02D8 U+00DC,因此希望翻转 BOM 将导致字节按预期顺序读取)

于 2009-04-23T15:37:50.970 回答
1

可能您忘记阅读_wfopen()文档了。他们在那里指定编码参数。顺便说一句,我假设您已经在使用 Unicode (wchars)。

我建议您在有或没有 BOM 的文件中使用 UTF-8,但强制您的 fopen 使用 UTF-8 标志。它看起来_wfopen("newfile.txt", "r, ccs=UTF-8");适用于带或不带 BOM 的 UTF-8 以及 UTF-16。不要错误地使用ccs=Unicode.UTF-8 文件而没有 BOM 是很常见的事情。

在尝试工作之前,您真的应该阅读一点关于 Unicode 的知识。这是一项非常好的投资——如果您了解 Unicode 的工作原理,它将为您节省时间。

这是一个开始http://blog.i18n.ro/newbie-guide-to-unicode/并且不要忘记阅读文章末尾的链接。

如果您真的需要一个简单的文本编辑器,可以让您使用 Unicode 编码,请使用Notepad++并忘记记事本。

于 2010-08-12T10:02:42.733 回答