1
这是一个比Unicode问题更多的MBCS问题。我需要创建一个API,它返回一个结构体列表,每个实例拥有一个Unicode字符作为其成员之一。这是在.NET中,所以你会认为我想要UTF-16,但对于亚洲人来说,需要两个字符。返回Unicode字符时的最佳做法是什么?如何在API中表示Unicode字符
- 使用2个UTF-16字符的数组 - 测试第一个字符以查看它是否是代理,有一个计数?
- 忽略代理问题,让它给调用者找出实际的字形编码跨度结构?
- 使用字符串,所以我不在乎它是一个或两个字符的长度?
- 使用UTF-32
什么人通常为UTF-8呢?我猜他们从不处理单个字符,并且所有内容都保存在一个字符串中(例如,在字符串中搜索字符实际上是通过查找子字符串来完成的)。也许这是我的C++程序员,但是一个字符串看起来很沉重。
我想我会去做#3。别人做了什么?
起初我确信自己的口音不会是一个问题,但我认为他们确实是。我假设会有一个规范化表单,它可以使它们都符合单个代码点。在我的情况下,我想将字形+任意数量的重音作为单个“字符”处理。 – 2010-02-19 03:57:21
是的,只有一些重音字符可以放入单个码点,通常是来自前Unicode字符集的码字。 – 2010-02-19 20:32:04