Bayt Sırası İşaretlerini Kullanma

Unicode metin dosyaları UTF-8, UTF-16 ve UTF-32 gibi çeşitli biçimlerde kodlanabilir. Bu biçimlerin her birine, metin yazılırken kullanılan bayt sıralamasını gösteren bir bayt sipariş işareti (BOM) ön eki eklenebilir. Kullanılabilir bayt sırası işaretleri aşağıdaki tabloda listelenmiştir. UTF-8 için bayt sırası işareti isteğe bağlıdır çünkü baytlar yalnızca bir sırada olabilir. UTF-16 ve UTF-32 için bayt sırası işareti gereklidir çünkü bu biçimler bayt sıralamasına duyarlıdır.

Not

Bayt sırası işareti, metnin bayt sırasını seçen bir denetim karakteri değildir.

 

Bayt sırası işareti Açıklama
EF BB BF UTF-8
FF FE UTF-16, küçük endian
FE FF UTF-16, büyük endian
FF FE 00 00 UTF-32, küçük uçlu
00 00 FE FF UTF-32, büyük endian

 

Not

Eski Microsoft ürünleri, "Unicode" için küçük endian bayt sırası olan Windows-1252 veya UCS-2 (UTF-16 ile sabit) kullanır. Yeni uygulamalar için UTF-8 önerilir.

 

İdeal olan, tüm Unicode metinlerinin tek bir bayt sıralama kuralı kümesine uymasıdır. Ancak mikroişlemciler en az önemli bayt yerleşiminde farklılık gösterdiğinden bu mümkün değildir. Intel ve MIPS işlemcileri önce en az önemli baytı konumlandırırken, Motorola işlemcileri (ve tüm bayt ters çevrilmiş Unicode dosyaları) en son konumuna yerleştirir. Tek bir bayt sıralama kuralı kümesiyle, bir mikro işlemci türündeki kullanıcılar, dosya hiçbir zaman farklı bir mikro işlemciye dayalı olarak başka bir işletim sistemine aktarılamasa bile düz metin dosyası her okunduğu veya yazıldığı zaman bayt sırasını değiştirmek zorunda kalır.

Bayt sırasını belirtmek için tercih edilen yer bir dosya üst bilgisindedir, ancak metin dosyalarında üst bilgi yoktur. Bu nedenle Unicode, bayt sırası işaretleri olarak bir karakter (U+FEFF) ve karakter olmayan (U+FFFE) tanımlamıştır. Bunlar birbirinin ayna bayt görüntüleridir.

U+FEFF dizisi Unicode olmayan normal bir metin dosyasının başında çok nadir olduğundan, dosyayı Unicode dosyası olarak tanımlamak için örtük bir işaretçi veya imza görevi görebilir. Hem Unicode hem de Unicode olmayan metin dosyalarını okuyan uygulamalar, dosyanın büyük olasılıkla bir Unicode dosyası olduğunu gösteren bir gösterge olarak bu dizinin varlığını kullanmalıdır. Metin dosyalarını sonlandırmak için MS-DOS EOF işaretçisini kullanmak için bu tekniği karşılaştırın.

Bir uygulama bir metin dosyasının başında U+FEFF bulduğunda, genellikle dosyayı Unicode dosyası olarak işler, ancak doğrulama için daha fazla buluşsal denetim gerçekleştirebilir. Bu tür bir denetim, düşük sıralı baytlardaki varyasyonunun yüksek sıralı baytlardaki varyasyondan çok daha yüksek olup olmadığını öğrenmek için test etmek kadar basit olabilir. Örneğin, ASCII metni Unicode metne dönüştürülürse, her saniye bayt 0 olur. Ayrıca, satır besleme ve satır başı karakterleri (U+000A ve U+000D) ile dosya boyutunun çift veya tek olması için denetleme yapılması, dosyanın doğasına ilişkin güçlü bir gösterge sağlayabilir.

Bir uygulama metin dosyasının başında U+FFFE bulduğunda, dosyanın bayt ters çevrilmiş bir Unicode dosyası olduğu anlamına gelir. Uygulama bayt sırasını değiştirebilir veya kullanıcıyı bir hata oluştuğu konusunda uyarabilir.

Unicode bayt sırası işareti karakteri hiçbir kod sayfasında bulunamadığından, veriler ANSI'ye dönüştürülürse kaybolur. Diğer Unicode karakterlerden farklı olarak, dönüştürüldüğünde varsayılan karakterle değiştirilmez. Dosyanın ortasında bayt sırası işareti bulunursa, Unicode karakteri olarak yorumlanmaz ve metin çıkışı üzerinde hiçbir etkisi yoktur.

Not

U+FFFF Unicode değeri düz metin dosyalarında geçersizdir ve uygulamalar arasında geçirilemez. Bir uygulamanın özel kullanımı için ayrılmıştır.

 

Unicode Özel Karakterler Kullanarak