Bagikan melalui


Masalah Aplikasi Konsol

Fungsi konsol 8-bit menggunakan halaman kode OEM. Semua fungsi lain menggunakan halaman kode ANSI secara default. Ini berarti bahwa string yang dikembalikan oleh fungsi konsol mungkin tidak diproses dengan benar oleh fungsi lain dan sebaliknya. Misalnya, jika FindFirstFileA mengembalikan string yang berisi karakter ANSI tertentu yang diperluas, WriteConsoleA tidak akan menampilkan string dengan benar.

Solusi jangka panjang terbaik untuk aplikasi konsol adalah menggunakan Unicode. Konsol akan menerima pengodean UTF-16 pada varian W api atau pengodean UTF-8 pada varian A API setelah menggunakan SetConsoleCP dan SetConsoleOutputCP ke 65001 (CP_UTF8 konstanta) untuk halaman kode UTF-8.

Dengan membatasi solusi tersebut , aplikasi konsol harus menggunakan fungsi SetFileApisToOEM . Fungsi tersebut mengubah fungsi file yang relevan sehingga menghasilkan string set karakter OEM daripada string set karakter ANSI.

Berikut ini adalah fungsi file:

Saat berhadapan dengan baris perintah, aplikasi konsol harus mendapatkan baris perintah dalam bentuk Unicode dan mengonversinya ke formulir OEM, menggunakan fungsi karakter-ke-OEM yang relevan. Perhatikan juga, argv tersebut menggunakan set karakter ANSI.