2010-09-23 107 views
1

我的Win32/MFC程序会建立一个名称列表,并按字母顺序将它们放入列表中。当它只支持ASCII字符串时,这个工作是通过一个简单的char-by-char字符串比较来实现的。但是现在我想接受UTF-8字符串,因此我需要一个更复杂的方案 - 例如,字母“a”的所有形式都应该从字母化的角度来看是等价的。在Win32程序中对UTF-8字符串进行排序

是否有一个函数可以做到这一点,或者我将不得不制作自己的比较表来对这些字符串进行排序?

回答

1

CompareStringEx Function可能会做你所需要的。

但请注意,此函数(以及一般的Windows API)不使用UTF-8编码来表示unicode字符串。相反,它使用编码(又名“宽字符字符串”)编码为UTF-16。一般来说,你可能会把UTF-8编码与unicode混淆起来。但是如果你真的在处理UTF-8编码的字符串,那么你可以使用MultiByteToWideChar Function做从UTF-8到宽字符串的转换。

+0

感谢您的出色反应!我在这里肯定是处理UTF-8,因为我正在从GEDCOM文件(一种族谱标准)中获取字符串,这些字符串以UTF-8编码,并且正在创建一个用于Android设备的SQLite数据库。 SQLite和Android都使用UTF-8作为标准。 – gordonwd 2010-09-25 13:48:12

相关问题