Как преобразовать строку UTF-8 в верхний регистр? - PullRequest
7 голосов
/ 29 марта 2012

Существует ли переносимый способ преобразования строки UTF-8 в C в верхний регистр?Если нет, то как Linux это делает?

Ответы [ 3 ]

8 голосов
/ 29 марта 2012

Глеб имеет g_utf8_strup().

8 голосов
/ 29 марта 2012

Переносимый способ сделать это - использовать библиотеку с поддержкой Unicode, такую ​​как ICU . Похоже, u_strToUpper может функция, которую вы ищете.

0 голосов
/ 29 марта 2012

Канонический способ сделать это с помощью wchar_t - если у вас есть строка широких символов и вы используете towlower / towupper / towctrans с вашими широкими символами (что будет работать, если ваш языковой стандарт установлен правильно).Поэтому вам нужно взять строку UTF-8, преобразовать ее в строку широких символов, а затем использовать эти функции, которые принимают wchar_t и затем конвертируют обратно.

Это гигантская PITA, так что вы, вероятно, лучшеотключить с помощью поддерживаемой библиотеки Unicode с открытым исходным кодом, например ICU .

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