Halaman Kode

Sebagian besar aplikasi yang ditulis saat ini menangani data karakter terutama sebagai Unicode, menggunakan pengodean UTF-16. Namun, banyak aplikasi warisan terus menggunakan set karakter berdasarkan halaman kode. Bahkan aplikasi baru terkadang harus bekerja dengan halaman kode, seringkali karena salah satu alasan berikut:

  • Untuk berkomunikasi dengan aplikasi warisan.
  • Untuk berkomunikasi dengan server email dan berita yang lebih lama, yang mungkin tidak selalu mendukung Unicode.
  • Untuk berkomunikasi dengan Konsol Windows untuk tujuan warisan. (Konsol memang mendukung Unicode, tetapi beberapa alat aplikasi baris perintah warisan mungkin tidak.)

Catatan

Aplikasi Windows baru harus menggunakan Unicode untuk menghindari inkonsistensi halaman kode yang bervariasi dan untuk kemudahan pelokalan.

 

Setiap halaman kode diwakili oleh pengidentifikasi halaman kode, misalnya, 1252, dan ditangani oleh fungsi API Set Karakter dan Unicode. Untuk daftar pengidentifikasi halaman kode yang didukung, lihat Pengidentifikasi Halaman Kode. Referensi "Halaman Kode" di Pusat Pengembang Global Microsoft Go memberikan deskripsi lengkap tentang banyak halaman kode.

Halaman kode Windows, yang biasa disebut "halaman kode ANSI", adalah halaman kode yang nilai non-ASCII-nya (nilai lebih besar dari 127) mewakili karakter internasional. Halaman kode ini digunakan secara asli di Windows Me, dan juga tersedia di Windows NT dan yang lebih baru.

Catatan

Awalnya, halaman kode Windows 1252, halaman kode yang biasa digunakan untuk bahasa Inggris dan bahasa Eropa Barat lainnya, didasarkan pada draf American National Standards Institute (ANSI). Draf itu akhirnya menjadi ISO 8859-1, tetapi halaman kode Windows 1252 diimplementasikan sebelum standar menjadi final, dan tidak persis sama dengan ISO 8859-1.

 

Banyak fungsi Windows API memiliki versi "A" (ANSI) dan "W" (wide, Unicode). Versi "A" menangani teks berdasarkan halaman kode Windows, sementara versi "W" menangani teks Unicode. Lihat Jenis Data Windows untuk String dan Konvensi untuk Prototipe Fungsi.

Halaman kode Windows juga terkadang disebut sebagai "halaman kode aktif" atau "halaman kode aktif sistem". Sistem operasi Windows selalu memiliki satu halaman kode Windows yang saat ini aktif. Semua versi ANSI fungsi API menggunakan halaman kode yang saat ini aktif.

Halaman kode produsen peralatan asli (OEM) adalah halaman kode yang nilai non-ASCII-nya mewakili karakter gambar dan tanda baca baris. Halaman kode ini awalnya digunakan untuk MS-DOS dan masih digunakan untuk aplikasi konsol. Mereka juga digunakan untuk nama file yang tidak diperluas dalam sistem file FAT12, FAT16, dan FAT32, seperti yang dijelaskan dalam Set Karakter yang Digunakan dalam Nama File. Halaman kode OEM yang biasa untuk bahasa Inggris adalah halaman kode 437.

Untuk halaman kode Windows dan halaman kode OEM, nilai kode 0x00 melalui 0x7F sesuai dengan kumpulan karakter ASCII 7-bit. Nilai kode 0x00 melalui 0x19 dan 0x7F selalu mewakili karakter kontrol standar dan 0x20 melalui 0x7E mewakili karakter yang dapat ditampilkan standar. Karakter yang diwakili oleh kode yang tersisa, 0x80 melalui 0xff, bervariasi di antara kumpulan karakter. Setiap set karakter mencakup karakter khusus yang berbeda, biasanya disesuaikan untuk bahasa atau sekelompok bahasa. Halaman kode Windows 1252 dan halaman kode OEM 437 umumnya digunakan dalam Amerika Serikat.

Selain halaman kode Windows dan OEM, aplikasi Anda dapat menggunakan halaman kode non-asli. Contohnya adalah halaman kode EBCDIC dan Macintosh.

Dua pengodean Unicode (UTF-7 dan UTF-8) diimplementasikan sebagai halaman kode. Seperti halaman kode lainnya, setiap halaman dikenal oleh pengidentifikasi numerik dan dapat ditangani dengan banyak fungsi API Unicode dan set karakter yang sama.

Halaman kode dapat berupa halaman kumpulan karakter byte tunggal (SBCS) atau halaman kumpulan karakter byte ganda (DBCS). Di halaman SBCS, setiap byte secara langsung mengodekan satu karakter, sehingga dimungkinkan untuk mewakili tepat 256 karakter yang berbeda (termasuk karakter kontrol, huruf, digit, tanda baca, simbol, dan sejenisnya). Halaman kode DBCS digunakan untuk bahasa seperti Jepang dan Cina. Di halaman kode seperti itu, beberapa karakter memiliki pengodean dua byte dengan nilai byte tertentu (selalu nilai yang lebih besar dari 127) berfungsi sebagai "byte prospek". Alih-alih mengodekan karakter di kanan mereka sendiri, byte prospek dapat dipetakan ke karakter hanya bersama dengan "byte jejak".

Beberapa protokol warisan memerlukan penggunaan halaman kode SBCS dan DBCS. Setiap halaman kode SBCS/DBCS mendukung karakter yang berbeda, tetapi tidak ada halaman kode yang mendukung luasnya karakter yang disediakan oleh Unicode. Setiap halaman kode SBCS/DBCS mendukung subset yang berbeda, dikodekan secara berbeda.

Catatan

Data yang dikonversi dari satu halaman kode SBCS atau DBCS ke halaman lain mengalami kerusakan, karena nilai data yang sama pada halaman kode yang berbeda dapat mengodekan karakter yang berbeda. Data yang dikonversi dari Unicode ke SBCS atau DBCS mengalami kehilangan data, karena halaman kode tertentu mungkin tidak dapat mewakili setiap karakter yang digunakan dalam data Unicode tertentu.

 

Selain halaman kode SBCS dan DBCS, aplikasi Anda telah tersedia halaman kode set karakter multibyte 52936, 54936, 51949, dan 5022x, yang menggunakan pendekatan yang mirip dengan itu untuk DBCS. Namun, halaman kode set karakter multibyte melampaui pengodean dua byte dari beberapa karakter. UTF-7 dan UTF-8 menggunakan pendekatan serupa untuk mengodekan Unicode berdasarkan byte 7-bit dan 8-bit. Untuk informasi selengkapnya, lihat Unicode.

Beberapa fungsi Unicode dan set karakter memungkinkan aplikasi Anda menangani halaman kode. Aplikasi dapat menggunakan fungsi GetCPInfo dan GetCPInfoEx untuk mendapatkan informasi tentang halaman kode. Informasi ini mencakup karakter default yang digunakan ketika karakter dalam string yang dikonversi tidak memiliki entri yang sesuai di halaman kode.

Aplikasi dapat menggunakan fungsi MultiByteToWideChar dan WideCharToMultiByte untuk mengonversi antar string berdasarkan halaman kode Windows dan string Unicode. Meskipun namanya mengacu pada "MultiByte", fungsi-fungsi ini bekerja sama baiknya dengan SBCS, DBCS, dan halaman kode set karakter multibyte.

Catatan

WideCharToMultiByte dapat kehilangan beberapa data jika halaman kode yang disediakan tidak dapat mewakili semua karakter dalam string Unicode.

 

Aplikasi Anda dapat mengonversi antara halaman kode Windows dan halaman kode OEM menggunakan fungsi pustaka runtime C standar. Namun, penggunaan fungsi-fungsi ini menghadirkan risiko kehilangan data karena karakter yang dapat diwakili oleh setiap halaman kode tidak sama persis.

Aplikasi Anda juga dapat memanggil fungsi GetACP . Fungsi ini mengambil pengidentifikasi halaman kode Windows (ANSI) saat ini.

Kumpulan Karakter