Почему функция wsetlocale () необходима для кодирования Unicode? - PullRequest
0 голосов
/ 11 января 2019

Я узнал, что Unicode может различать многие символы, используемые для других языков, таких как китайский. Тогда, если мы решим кодировку, например Utf-16, настройка локали не нужна, я думаю. Но на самом деле это не так. _wsetlocale () необходим даже для Unicode. Интересно, почему.

_wsetlocale(LC_ALL, L"korean"); 
wchar_t a = L'개';
wcout << a << endl;

Вот так. Я устанавливаю набор символов не MBCS, а Unicode. Почему я должен установить локаль для юникода?

1 Ответ

0 голосов
/ 11 января 2019

Основной причиной является сравнение строк без учета регистра с такими библиотечными функциями, как wcscasecmp . Кроме того, некоторые строки могут оцениваться по-разному с помощью библиотечных функций strcoll и wcscoll, чем с традиционными функциями strcmp и wcscmp. Подробнее на этот ответ здесь .

Для получения дополнительной информации о том, как языковой стандарт влияет на время выполнения c и c ++, обратитесь к странице справочника для setlocale .

...