这是一个MBCS问题,而不是Unicode问题。我需要创建一个API,它返回一个结构列表,每个实例都包含一个Unicode字符作为其成员之一。这是在.NET中,所以你认为我想要UTF-16,但对于亚洲字符,则需要两个字符。返回Unicode字符时最佳做法是什么?
人们通常为UTF-8做些什么?我猜他们从不处理单个字符,并且所有内容都保存在字符串中(例如,在字符串中搜索字符实际上是通过查找子字符串来完成的)。也许这是我的C ++程序员,但字符串似乎很重要。
我想我会做#3。其他人做了什么?
答案 0 :(得分:1)
你正确使用字符串。在Unicode中,因为即使是单个字符也可能需要多个代码点(根据编码,每个代码点都需要一定数量的字节),因此您不能真正处理任何比字符串更少的代码。甚至像isUpper
之类的函数也应该使用一个字符串,并且只能处理它的第一个元素。
角色可能需要多个代码点的原因通常是因为组合字符,重音等等。