Berurusan dengan UTF-8 Strings dalam C pada Windows
Pengekodan rentetan sebagai UTF-8 digunakan secara meluas untuk aplikasi merentas platform. Walau bagaimanapun, mengeluarkan rentetan UTF-8 kepada std::cout pada Windows memberikan cabaran unik.
Gelagat lalai pada Windows adalah untuk std::cout untuk mengharapkan rentetan dalam format bukan Unikod. Apabila dibentangkan dengan rentetan UTF-8, ia memaparkan aksara yang rosak.
Untuk menangani isu ini, terdapat dua langkah utama:
Berikut ialah coretan kod yang disemak yang menggabungkan penyelesaian ini:
<code class="cpp">#include <string> #include <iostream> #include <Windows.h> #include <cstdio> 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 << test << std::endl; return 0; }</code>
Selain itu untuk langkah ini, ambil perhatian bahawa fon raster dalam konsol Windows mungkin tidak memaparkan aksara Unicode bukan ASCII dengan betul. Untuk mendayakan pemaparan yang betul, adalah disyorkan untuk menukar kepada fon TrueType, yang kini menjadi lalai dalam Windows 10 dan versi yang lebih baru.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Rentetan UTF-8 dengan Betul ke `std::cout` pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!