Share via


Dukungan Unicode dan Multibyte Character Set (MBCS)

Beberapa bahasa, misalnya, Jepang dan Cina, memiliki set karakter besar. Untuk mendukung pemrograman untuk pasar ini, Microsoft Foundation Class Library (MFC) memungkinkan dua pendekatan berbeda untuk menangani set karakter besar:

  • Unicode, wchar_t karakter lebar berbasis, dan string yang dikodekan sebagai UTF-16.

  • Multibyte Character Sets (MBCS), char karakter dan string byte tunggal atau ganda berbasis yang dikodekan dalam set karakter khusus lokal.

Catatan

Microsoft merekomendasikan pustaka MFC Unicode untuk semua pengembangan baru.
Pustaka MBCS tidak digunakan lagi di Visual Studio 2013 dan Visual Studio 2015. Ini bukan lagi kasusnya.
Dimulai dengan Visual Studio 2017, pustaka MBCS tidak lagi ditolak dan tidak menghasilkan peringatan penghentian.

Dukungan MFC untuk Untai Unicode

Seluruh pustaka kelas MFC diaktifkan secara kondisional untuk karakter dan string Unicode yang disimpan dalam karakter luas sebagai UTF-16. Secara khusus, kelas CString diaktifkan Unicode.

File pustaka, debugger, dan DLL ini digunakan untuk mendukung Unicode di MFC:

MFCversiU.LIB
MFCversiUD. LIB
MFCMversiU.LIB
MFCMversiUD. LIB
MFCSversiU.LIB
MFCSversiUD. LIB
UAFXCW. LIB
UAFXCWD. LIB

MFCversiU.PDB
MFCversiUD. PDB
MFCMversiU.PDB
MFCMversiUD. PDB
MFCSversiU.PDB
MFCSversiUD. PDB
UAFXCW. PDB
UAFXCWD. PDB

Versi MFCU.DLL
Versi MFCUD.DLL
Versi MFCMU.DLL
UD.DLL versiMFCM

(versi mewakili nomor versi file; misalnya, '140' berarti versi 14.0.)

CString didasarkan pada TCHAR jenis data. Jika simbol _UNICODE didefinisikan untuk build program Anda, TCHAR didefinisikan sebagai jenis wchar_t, jenis pengodean karakter 16-bit. Jika tidak, TCHAR didefinisikan sebagai char, pengodean karakter normal 8-bit. Oleh karena itu, di bawah Unicode, CString terdiri dari karakter 16-bit. Tanpa Unicode, ini terdiri dari karakter jenis char.

Untuk menyelesaikan pemrograman Unicode aplikasi Anda, Anda juga harus:

  • _T Gunakan makro untuk mengkodekan string harfiah secara kondisional agar portabel ke Unicode.

  • Saat Anda meneruskan string, perhatikan apakah argumen fungsi memerlukan panjang karakter atau panjang dalam byte. Perbedaannya penting jika Anda menggunakan string Unicode.

  • Gunakan versi portabel dari fungsi penanganan string run-time C.

  • Gunakan jenis data berikut untuk karakter dan penunjuk karakter:

    • Gunakan TCHAR tempat Anda akan menggunakan char.

    • Gunakan LPTSTR tempat Anda akan menggunakan char*.

    • Gunakan LPCTSTR tempat Anda akan menggunakan const char*. CString menyediakan operator LPCTSTR untuk mengonversi antara CString dan LPCTSTR.

CString juga memasok konstruktor sadar Unicode, operator penugasan, dan operator perbandingan.

Referensi Pustaka Run-Time mendefinisikan versi portabel dari semua fungsi penanganan stringnya. Untuk informasi selengkapnya, lihat kategori Internasionalisasi.

Dukungan MFC untuk String MBCS

Pustaka kelas juga diaktifkan untuk set karakter multibyte, tetapi hanya untuk kumpulan karakter byte ganda (DBCS).

Dalam kumpulan karakter multibyte, karakter dapat memiliki lebar satu atau 2 byte. Jika lebarnya 2 byte, byte pertamanya adalah "byte prospek" khusus yang dipilih dari rentang tertentu, tergantung pada halaman kode mana yang digunakan. Diambil bersama-sama, prospek dan "byte jejak" menentukan pengodean karakter yang unik.

Jika simbol _MBCS didefinisikan untuk build program Anda, ketik TCHAR, yang CString berbasis, petakan ke char. Terserah Anda untuk menentukan byte mana dalam CString byte prospek dan mana yang merupakan byte jejak. Pustaka run-time C menyediakan fungsi untuk membantu Anda menentukan ini.

Di bawah DBCS, string tertentu dapat berisi semua karakter ANSI byte tunggal, semua karakter byte ganda, atau kombinasi keduanya. Kemungkinan ini membutuhkan perawatan khusus dalam mengurai string. Ini termasuk CString objek.

Catatan

Serialisasi string Unicode di MFC dapat membaca string Unicode dan MBCS terlepas dari versi aplikasi mana yang Anda jalankan. File data Anda portabel antara versi Unicode dan MBCS dari program Anda.

CString fungsi anggota menggunakan versi "teks generik" khusus dari fungsi run-time C yang mereka panggil, atau mereka menggunakan fungsi sadar Unicode. Oleh karena itu, misalnya, jika CString fungsi biasanya akan memanggil strcmp, fungsi teks _tcscmp generik yang sesuai sebagai gantinya. Bergantung pada bagaimana simbol _MBCS dan _UNICODE didefinisikan, _tcscmp peta sebagai berikut:

Simbol Fungsi
_MBCS Didefinisikan _mbscmp
_UNICODE Didefinisikan wcscmp
Tidak ada simbol yang ditentukan strcmp

Catatan

Simbol _MBCS dan _UNICODE saling eksklusif.

Pemetaan fungsi teks generik untuk semua rutinitas penanganan string run-time dibahas dalam Referensi Pustaka Run-Time C. Untuk daftar, lihat Internasionalisasi.

Demikian pula, CString metode diimplementasikan dengan menggunakan pemetaan jenis data generik. Untuk mengaktifkan MBCS dan Unicode, MFC menggunakan TCHAR untuk char atau wchar_t, LPTSTR untuk char* atau wchar_t*, dan LPCTSTR untuk const char* atau const wchar_t*. Ini memastikan pemetaan yang benar untuk MBCS atau Unicode.

Lihat juga

String (ATL/MFC)
Manipulasi String