BOM nedir?
Bayt sırası işareti (BOM) veya bayt sırası işareti, bir Unicode dosyasının kodlama tipini tanımlamak için UTF-8, UTF16 veya UTF-32 ile kodlanmış bir Unicode dosyasına eklenen özel bir işarettir. UTF-8 için, çok baytlı kodlanmış bir dosyanın kodlama tipini ve bayt sırasını (big-endian veya little-endian) işaretlemek için BOM gerekmez. UTF-8'de, her karakter için kodlanan bit sayısı ilk bayt ile ifade edilir ve big-endian ile little-endian arasında bir ayrım yoktur. UTF-8, BOM gerektirmez, ancak Unicode standardı UTF-8'de BOM'ların kullanılmasına izin verir. Bu nedenle, BOM olmadan UTF-8 standart biçimdir ve Microsoft'un esas alışkanlığı bir UTF-8 dosyasına BOM koymaktır (bu arada: Microsoft'un alışkanlığı da UTF-16'yı BOM ile detaylara girmeden "Unicode" olarak adlandırmaktır). BOM'lar, bayt sırasını işaretlemek için UTF-16 ve UTF-32 için hazırlanır. Microsoft, UTF-8'de BOM kullanır çünkü UTF-8 ile ASCII kodlaması arasında net bir ayrım sağlar; aksi takdirde Excel'de bir CSV dosyası açmak sorunlu olabilir. Ancak böyle bir dosya, Windows dışındaki işletim sistemlerinde sorunlara yol açabilir. "UTF-8" ile "BOM ile UTF-8" arasındaki fark, BOM olup olmamadığıdır. Yani, dosyanın başında U+FEFF olup olmadığı. UTF-8 web kodu BOM kullanmamalıdır, aksi takdirde hatalar yaygındır. http yanıtından bir CSV dosyası çıkarıldığında, utf8 olarak ayarlandığında varsayılan olarak dahil edilmez BOM ama Windows Excel UTF8 kodlamasını doğrulamak için BOM kullanıyor ve hepsi dosyanın başına BOM yazmak zorunda.
İlk kez bir Java kod oluşturucu geliştirdiğinizde, dosyayı doğrudan koyacaksınızBOM etiketini içeren bir UTF-8 dosyasına yazBu durum, aşağıdaki gibi paketleme hatalarına yol açar:
Yasadışı karakterler: '\ufeff'
Bir dosyanın BOM etiketleri olup olmadığını nasıl belirleyebilirim? , kod şöyledir:
Meslektaşlar, bağlıUTF-8 BOM formatını UTF-8 (BOM etiketi olmadan) formatına dönüştürür, tam kod aşağıdaki gibidir:
(Son)
|