这更像是一个 MBCS 问题而不是 Unicode 问题。我需要创建一个 API,它返回一个结构列表,每个实例都将一个 Unicode 字符作为其成员之一。这是在 .NET 中,所以你会认为我想要 UTF-16,但是对于亚洲字符,需要两个字符。返回 Unicode 字符时的最佳做法是什么?
- 使用 2 个 UTF-16 字符的数组 - 测试第一个字符,看看它是否是代理,有计数吗?
- 忽略代理问题,让调用者找出实际的字形编码跨越结构?
- 改用字符串,所以我不在乎它的长度是一个还是两个字符?
- 使用 UTF-32
人们通常为 UTF-8 做什么?我猜他们从不处理单个字符,并且所有内容都保存在字符串中(例如,在字符串中搜索字符实际上是通过查找子字符串来完成的)。也许是我的 C++ 程序员,但字符串似乎太重了。
我想我会做#3。别人做了什么?