Код: Выделить всё
óóКод: Выделить всё
ÓÓИсходная последовательность байтов в строке — 0xc3b3c3b3 (два байта на символ и два экземпляра ó), и я бы хотел, чтобы выходные данные были 0xc393c393 (два экземпляра Ó). В StackOverflow есть несколько примеров, но они используют широкие строки символов, а в других ответах говорится, что вам не следует использовать широкие строки символов для UTF-8. Также оказывается, что эта проблема может быть очень «сложной», поскольку вывод может зависеть от локали пользователя.
Я ожидал просто использовать что-то вроде std::toupper(), но мне действительно неясно, как это использовать, потому что кажется, что я конвертирую не один символ за раз, а целую строку. Кроме того, этот пример Ideone, который я собрал, похоже, показывает, что toupper() для 0xc3b3 — это просто 0xc3b3, что является неожиданным результатом. Вызов setlocale для UTF-8 или ISO8859-1, похоже, не меняет результат.
Мне бы хотелось получить некоторые рекомендации, если бы вы могли пролить свет на то, что я делаю неправильно, или почему мой вопрос/предпосылка ошибочны!
Подробнее здесь: https://stackoverflow.com/questions/368 ... cters-in-c
Мобильная версия