Работа со строками UTF-8 в C в Windows
Кодирование строк в формате UTF-8 широко используется для кроссплатформенных приложений. Однако вывод строк UTF-8 в std::cout в Windows представляет собой уникальные проблемы.
По умолчанию в Windows std::cout ожидает строки в форматах, отличных от Unicode. При представлении строк UTF-8 отображаются поврежденные символы.
Для решения этой проблемы необходимо выполнить два основных шага:
Вот исправленный фрагмент кода, который включает эти решения:
#include
#include
#include
#include
int main() {
// Set console code page to UTF-8
SetConsoleOutputCP(CP_UTF8);
// Enable buffering to prevent byte-by-byte transmission
setvbuf(stdout, nullptr, _IOFBF, 1000);
// Output UTF-8 string
std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
std::cout В дополнение к этим шагам обратите внимание, что растровые шрифты в консоли Windows могут неправильно отображать символы Юникода, отличные от ASCII. Чтобы обеспечить правильную отрисовку, рекомендуется переключиться на шрифт TrueType, который теперь используется по умолчанию в Windows 10 и более поздних версиях.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3