Bagikan melalui


Menggunakan Tanda Urutan Byte

File teks Unicode dapat dikodekan dalam beberapa format, termasuk UTF-8, UTF-16, dan UTF-32. Masing-masing format ini dapat diawali dengan tanda urutan byte (BOM) yang menunjukkan urutan byte yang digunakan saat teks ditulis. Tanda urutan byte yang tersedia tercantum dalam tabel berikut. Untuk UTF-8, tanda urutan byte bersifat opsional, karena byte hanya boleh dalam satu urutan. Untuk UTF-16 dan UTF-32, tanda urutan byte diperlukan karena format tersebut sensitif terhadap pengurutan byte.

Catatan

Tanda urutan byte bukan karakter kontrol yang memilih urutan byte teks.

 

Tanda urutan byte Deskripsi
EF BB BF UTF-8
FF FE UTF-16, little endian
FE FF UTF-16, big endian
FF FE 00 00 UTF-32, little endian
00 00 FE FF UTF-32, big-endian

 

Catatan

Produk Microsoft warisan menggunakan Windows-1252 atau UCS-2 (diperbaiki dengan UTF-16), urutan byte little endian, untuk "Unicode". Untuk aplikasi baru, UTF-8 disarankan.

 

Idealnya, semua teks Unicode hanya mengikuti satu set aturan pengurutan byte. Namun, ini tidak mungkin karena mikroprosesor berbeda dalam penempatan byte yang paling tidak signifikan. Prosesor Intel dan MIPS memposisikan byte yang paling tidak signifikan terlebih dahulu, sedangkan prosesor Motorola (dan semua file Unicode terbalik byte) bertahan. Dengan hanya satu set aturan pengurutan byte, pengguna dari satu jenis mikroprosesor dipaksa untuk menukar urutan byte setiap kali file teks biasa dibaca dari atau ditulis ke, bahkan jika file tidak pernah ditransfer ke sistem operasi lain berdasarkan mikroprosesor yang berbeda.

Tempat yang disukai untuk menentukan urutan byte ada di header file, tetapi file teks tidak memiliki header. Oleh karena itu, Unicode telah mendefinisikan karakter (U+FEFF) dan noncharacter (U+FFFE) sebagai tanda urutan byte. Mereka adalah gambar byte cermin satu sama lain.

Karena urutan U+FEFF sangat jarang di awal file teks non-Unicode biasa, U+FEFF dapat berfungsi sebagai penanda atau tanda tangan implisit untuk mengidentifikasi file sebagai file Unicode. Aplikasi yang membaca file teks Unicode dan non-Unicode harus menggunakan kehadiran urutan ini sebagai indikator bahwa file kemungkinan besar adalah file Unicode. Bandingkan teknik ini dengan menggunakan penanda EOF MS-DOS untuk mengakhiri file teks.

Ketika aplikasi menemukan U+FEFF di awal file teks, aplikasi biasanya memproses file sebagai file Unicode, meskipun dapat melakukan pemeriksaan heuristik lebih lanjut untuk verifikasi. Pemeriksaan seperti itu bisa sesederhana pengujian untuk mengetahui apakah variasi dalam byte urutan rendah jauh lebih tinggi daripada variasi dalam byte urutan tinggi. Misalnya, jika teks ASCII dikonversi ke teks Unicode, setiap byte detik adalah 0. Selain itu, memeriksa karakter linefeed dan carriage return (U+000A dan U+000D) dan untuk ukuran file genap atau ganjil dapat memberikan indikator yang kuat tentang sifat file.

Ketika aplikasi menemukan U+FFFE di awal file teks, aplikasi menafsirkannya berarti bahwa file adalah file Unicode yang dibalik byte. Aplikasi dapat menukar urutan byte atau memperingatkan pengguna bahwa telah terjadi kesalahan.

Karena karakter tanda urutan byte Unicode tidak ditemukan di halaman kode apa pun, itu menghilang jika data dikonversi ke ANSI. Tidak seperti karakter Unicode lainnya, karakter tersebut tidak digantikan oleh karakter default saat dikonversi. Jika tanda urutan byte ditemukan di tengah file, tanda tersebut tidak ditafsirkan sebagai karakter Unicode dan tidak berpengaruh pada output teks.

Catatan

Nilai Unicode U+FFFF ilegal dalam file teks biasa dan tidak dapat diteruskan di antara aplikasi. Ini dicadangkan untuk penggunaan privat aplikasi.

 

Menggunakan Karakter Khusus di Unicode