Сортировка строк UTF-8 в программе Win32 - PullRequest
1 голос
/ 23 сентября 2010

Моя программа Win32 / MFC создает список имен, сортируя их в алфавитном порядке и помещая их в список. Когда он поддерживал только строки ASCII, это работало путем простого сравнения строк за символом. Но теперь, когда я хочу принимать строки UTF-8, мне нужна более сложная схема, поскольку, например, все формы буквы «а» должны быть эквивалентны с точки зрения алфавита.

Есть ли где-нибудь функция, которая может это сделать, или мне придется создать собственную таблицу сравнения для сортировки этих строк?

1 Ответ

1 голос
/ 23 сентября 2010

Функция CompareStringEx , вероятно, делает то, что вам нужно.

Но обратите внимание, что эта функция (и Windows API в целом) не использует кодировку UTF-8 для представления строк в Юникоде.Вместо этого он использует кодировку UTF-16 (иначе говоря, «строки широких символов»).Возможно, вы просто путаете кодировку UTF-8 с юникодом вообще.Но если вы действительно имеете дело со строками в кодировке UTF-8, то можете выполнить преобразование из строк UTF-8 в строки широких символов с помощью функции MultiByteToWideChar .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...