在Win32程序中对UTF-8字符串进行排序

时间:2010-09-23 14:03:56

标签: winapi utf-8

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

是否有某个功能可以执行此操作,或者我是否必须制作自己的比较表来对这些字符串进行排序?

1 个答案:

答案 0 :(得分:1)

CompareStringEx Function可能会满足您的需求。

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