Что я могу использовать для сравнения без учета регистра в двух подстрочных строках, кодированных UTF-8? По сути, я ищу функцию strnicmp
для UTF-8.эквивалент strnicmp для UTF-8?
3
A
ответ
2
Правила преобразования случаев в различные сценарии Unicode являются убийственно сложными, для этого требуются таблицы преобразования больших регистров. Вы не можете это сделать сами, вам понадобится библиотека. ОИТ является одним из них.
1
strcoll
должен знать локаль и правильно обрабатывать UTF8, по крайней мере, если это кодировка по умолчанию для локали. Если это не так, я до сих пор не знаю. Как обходной путь, вы можете преобразовать многобайтовую строку в wchars (mbrtowc), а затем использовать wcscasecmp, который, к сожалению, является расширением GNU, а не частью стандартных библиотек ... Не очень полезно.
Является ли strcoll нечувствительным к регистру? Есть ли способ указать максимальное количество символов для сравнения? –
нет, это должно быть как strcmp, с учетом регистраций. – ShinTakezou