Bagikan melalui


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?

Baca juga

Teks dan String
Dukungan untuk Menggunakan wmain