Apabila bekerja dengan rentetan berkod UTF-8 dalam aplikasi C merentas platform, isu boleh timbul apabila cuba mencetaknya ke std::cout pada sistem Windows. Secara lalai, std::cout menjangkakan rentetan 8-bit berada dalam Latin-1 atau format bukan Unicode yang serupa, yang membawa kepada keluaran bercelaru untuk rentetan UTF-8.
Untuk menangani masalah ini pada Windows, beberapa pendekatan boleh diambil:
Menetapkan Halaman Kod Konsol kepada UTF-8:
SetConsoleOutputCP(CP_UTF8);
Fungsi ini memberitahu Konsol Windows untuk mentafsir strim bait yang diterimanya sebagai UTF-8.
Menyelesaikan Isu Penimbalan Strim dalam Visual Studio STL:
setvbuf(stdout , nullptr, _IOFBF, 1000);
Penyelesaian ini membolehkan penimbalan untuk strim, menghalang kod STL daripada menghantar urutan UTF-8 bait sebagai bait individu ke konsol.
Memastikan Fon TrueType Digunakan:
Fon TrueType menyokong aksara Unicode, manakala fon raster mengabaikan halaman kod konsol. Windows 10 menggunakan Consolas sebagai fon lalai, tetapi dalam Windows 7, pengguna mungkin perlu menukar secara manual kepada fon TrueType untuk memaparkan aksara Unicode bukan ASCII dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Output UTF-8 yang Betul dengan std::cout pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!