Dukungan untuk Unicode
Unicode adalah spesifikasi untuk mendukung semua set karakter, termasuk yang tidak dapat diwakili dalam satu byte. Jika Anda memprogram pasar internasional, kami sarankan Anda menggunakan Unicode atau set karakter multibyte (MBCS). Atau, kode program Anda sehingga Anda dapat membangunnya dengan mengubah sakelar.
Karakter lebar adalah kode karakter multibahasa 2 byte. Puluhan ribu karakter, yang terdiri dari hampir semua karakter yang digunakan dalam komputasi modern di seluruh dunia, termasuk simbol teknis dan karakter penerbitan khusus, dapat diwakili sesuai dengan spesifikasi Unicode sebagai satu karakter lebar yang dikodekan dengan menggunakan UTF-16. Karakter yang tidak dapat diwakili hanya dalam satu karakter lebar dapat diwakili dalam pasangan Unicode dengan menggunakan fitur pasangan pengganti Unicode. Karena hampir setiap karakter dalam penggunaan umum diwakili dalam UTF-16 dalam satu karakter lebar 16-bit, menggunakan karakter lebar menyederhanakan pemrograman dengan set karakter internasional. Karakter lebar yang dikodekan menggunakan UTF-16LE (untuk little-endian) adalah format karakter asli untuk Windows.
String karakter lebar direpresentasikan sebagai wchar_t[]
array dan ditunjukkan oleh wchar_t*
penunjuk. Setiap karakter ASCII dapat direpresentasikan sebagai karakter yang luas dengan mengawali huruf L ke karakter. Misalnya, L'\0' adalah karakter NULL lebar (16-bit) yang dihentikan. Demikian pula, setiap literal string ASCII dapat direpresentasikan sebagai string karakter lebar literal dengan awalan huruf L ke harfiah ASCII (L"Hello").
Umumnya, karakter lebar membutuhkan lebih banyak ruang dalam memori daripada karakter multibyte tetapi lebih cepat diproses. Selain itu, hanya satu lokal yang dapat diwakili pada satu waktu dalam pengodean multibyte, sedangkan semua set karakter di dunia diwakili secara bersamaan oleh representasi Unicode.
Kerangka kerja MFC diaktifkan Unicode di seluruh, dan MFC menyelesaikan pengaktifan Unicode dengan menggunakan makro portabel, seperti yang ditunjukkan dalam tabel berikut.
Jenis Data Portabel di MFC
Jenis data non-portabel | Digantikan oleh makro ini |
---|---|
char , wchar_t |
_TCHAR |
char* , LPSTR (jenis data Win32), LPWSTR |
LPTSTR |
const char* , LPCSTR (jenis data Win32), LPCWSTR |
LPCTSTR |
Kelas CString
menggunakan _TCHAR
sebagai dasarnya dan menyediakan konstruktor dan operator untuk konversi yang mudah. Sebagian besar operasi string untuk Unicode dapat ditulis dengan menggunakan logika yang sama yang digunakan untuk menangani kumpulan karakter Ansi Windows, kecuali bahwa unit operasi dasar adalah karakter 16-bit alih-alih byte 8-bit. Tidak seperti bekerja dengan set karakter multibyte, Anda tidak perlu (dan tidak boleh) memperlakukan karakter Unicode seolah-olah itu adalah dua byte yang berbeda. Namun, Anda harus berurusan dengan kemungkinan satu karakter yang diwakili oleh sepasang pengganti karakter luas. Secara umum, jangan menulis kode yang mengasumsikan panjang string sama dengan jumlah karakter, baik sempit atau lebar, yang dikandungnya.
Apa yang ingin Anda lakukan?
Gunakan Dukungan MFC Unicode dan Multibyte Character Set (MBCS)
Gunakan wmain sehingga saya dapat meneruskan argumen karakter lebar ke program saya
Pelajari tentang pemetaan teks generik untuk portabilitas lebar byte
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk