Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memaparkan Aksara Unikod dengan Betul dalam Konsol Windows Menggunakan C?

Bagaimanakah Saya Boleh Memaparkan Aksara Unikod dengan Betul dalam Konsol Windows Menggunakan C?

Susan Sarandon
Susan Sarandonasal
2024-12-01 19:29:11532semak imbas

How Can I Display Unicode Characters Correctly in the Windows Console Using C  ?

Cara Memaparkan Aksara Unikod dalam Konsol Windows Menggunakan C

Ringkasan Masalah

Apabila cuba mengeluarkan aksara Unikod ke konsol Windows menggunakan cout dalam C , aksara pelik dipaparkan sebaliknya. Mengapa ini berlaku, dan adakah mungkin untuk memaparkan aksara Unicode dengan betul?

Penyelesaian

Isu timbul daripada kelakuan lalai konsol Windows, yang tidak mengendalikan output Unicode. Untuk menyelesaikan masalah ini, strim output aksara lebar std::wcout boleh digunakan dan bukannya cout.

#include <iostream>

int main() {
    std::wcout << L"Hello World!" << std::endl;
    return 0;
}

Walau bagaimanapun, walaupun dengan std::wcout, konsol mungkin masih gagal mengendalikan output Unicode. Untuk menangani perkara ini, konsol boleh dikonfigurasikan secara manual.

Pilihan Konfigurasi Manual

Untuk mengkonfigurasi konsol secara manual:

  • Jalankan cmd dengan /u hujah: Ini membolehkan sokongan Unicode apabila memulakan arahan segera.
  • Panggil chcp 65001: Ini menukar format output untuk menyokong Unicode.
  • Tetapkan fon Unicode dalam konsol: Fon seperti Lucida Unicode Konsol menyediakan sokongan yang lebih baik untuk aksara Unikod.

Alternatif Penyelesaian

Penyelesaian lain ialah menggunakan _setmode(_fileno(stdout), _O_U16TEXT);. Fungsi ini memerlukan kemasukan fcntl.h dan io.h, dan membenarkan aliran output mengendalikan aksara Unicode.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaparkan Aksara Unikod dengan Betul dalam Konsol Windows Menggunakan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn