Bagikan melalui


Ringkasan Pemrograman Unicode

Untuk memanfaatkan dukungan run-time MFC dan C untuk Unicode, Anda perlu:

  • Tentukan _UNICODE.

    Tentukan simbol _UNICODE sebelum Anda membangun program Anda.

  • Tentukan titik masuk.

    Pada halaman Tingkat Lanjut folder Linker dalam kotak dialog Halaman Properti proyek, atur simbol Titik Masuk ke wWinMainCRTStartup.

  • Gunakan fungsi dan jenis run-time portabel.

    Gunakan fungsi run-time C yang tepat untuk penanganan string Unicode. Anda dapat menggunakan wcs keluarga fungsi, tetapi Anda mungkin lebih suka makro yang sepenuhnya portabel (diaktifkan _TCHAR secara internasional). Makro ini semua diawali dengan _tcs; mereka menggantikan, satu untuk satu, untuk str keluarga fungsi. Fungsi-fungsi ini dijelaskan secara rinci di bagian Internasionalisasi dari Referensi Pustaka Run-Time. Untuk informasi selengkapnya, lihat Pemetaan Teks Generik di tchar.h.

    Gunakan _TCHAR dan jenis data portabel terkait yang dijelaskan dalam Dukungan untuk Unicode.

  • Tangani string harfiah dengan benar.

    Pengkompilasi Visual C++ menginterpretasikan string harfiah yang dikodekan sebagai:

    L"this is a literal string"
    

    untuk berarti string karakter Unicode. Anda dapat menggunakan awalan yang sama untuk karakter harfiah. _T Gunakan makro untuk mengodekan string harfiah secara generis, sehingga dikompilasi sebagai string Unicode di bawah Unicode atau sebagai string ANSI (termasuk MBCS) tanpa Unicode. Misalnya, sebagai ganti dari:

    pWnd->SetWindowText( "Hello" );
    

    gunakan:

    pWnd->SetWindowText( _T("Hello") );
    

    Dengan _UNICODE didefinisikan, _T menerjemahkan string harfiah ke formulir awalan L; jika tidak, _T menerjemahkan string tanpa awalan L.

    Tip

    _T Makro identik dengan _TEXT makro.

  • Hati-hati meneruskan panjang string ke fungsi.

    Beberapa fungsi menginginkan jumlah karakter dalam string; yang lain menginginkan jumlah byte. Misalnya, jika _UNICODE ditentukan, panggilan berikut ke CArchive objek tidak akan berfungsi (str adalah CString):

    archive.Write( str, str.GetLength( ) );    // invalid
    

    Dalam aplikasi Unicode, panjangnya memberi Anda jumlah karakter tetapi bukan jumlah byte yang benar, karena setiap karakter memiliki lebar 2 byte. Sebagai gantinya, Anda harus menggunakan:

    archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) );    // valid
    

    yang menentukan jumlah byte yang benar untuk ditulis.

    Namun, fungsi anggota MFC yang berorientasi karakter, bukan berorientasi byte, bekerja tanpa pengkodan tambahan ini:

    pDC->TextOut( str, str.GetLength( ) );
    

    CDC::TextOut mengambil sejumlah karakter, bukan sejumlah byte.

  • Gunakan fopen_s, _wfopen_s untuk membuka file Unicode.

Untuk meringkas, MFC dan pustaka run-time menyediakan dukungan berikut untuk pemrograman Unicode:

  • Kecuali untuk fungsi anggota kelas database, semua fungsi MFC diaktifkan Unicode, termasuk CString. CString juga menyediakan fungsi konversi Unicode/ANSI.

  • Pustaka run-time menyediakan versi Unicode dari semua fungsi penanganan string. (Pustaka run-time juga menyediakan versi portabel yang cocok untuk Unicode atau untuk MBCS. Ini adalah _tcs makro.)

  • tchar.h menyediakan jenis data portabel dan _T makro untuk menerjemahkan string dan karakter harfiah. Untuk informasi selengkapnya, lihat Pemetaan Teks Generik di tchar.h.

  • Pustaka run-time menyediakan versi karakter luas dari main. Gunakan wmain untuk membuat aplikasi Anda sadar Unicode.

Baca juga

Dukungan untuk Unicode