Правильное отображение символов UTF-8 в консоли Windows
Многие попытки отобразить символы UTF-8 в консоли Windows традиционными методами не увенчались успехом правильно отображать расширенные символы.
Неудачные попытки:
Один распространенный подход с использованием MultiByteToWideChar() и wprintf() оказался неэффективным, оставляя видимыми только символы ASCII. Кроме того, установка кодовой страницы вывода консоли на CP_UTF8 с помощью SetConsoleOutputCP() и запись напрямую символами ASCII по-прежнему приводили к повреждению символов.
Успешные методы:
В конечном счете, три метода оказался успешным:
Причина сбоя с CP_UTF8:
Основная проблема с CP_UTF8 возникает из-за того, что консоль не действует как обычный файл, принимающий поток байтов. Вместо этого консольный API обрабатывает данные в дискретных единицах, что приводит к неправильной интерпретации многобайтовых символов при передаче отдельными вызовами.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3