UTF-8 BOM (Byte Order Mark) Nedir? Web sitelerine nasıl zarar verir?

Anasayfa/Bilim ve Teknoloji/UTF-8 BOM (Byte Order Mark) Nedir? Web sitelerine nasıl zarar verir?

UTF-8 BOM (Byte Order Mark) Nedir? Web sitelerine nasıl zarar verir?

Bilinmediği takdirde Web sitelerinde çok ciddi sorunlara yol açan UTF-8 BOM (Byte Order Mark) nedense birçok kişi tarafından bilinmiyor. Fakat o kadar ciddi bir durum ki sitenizin tüm karakterlerinizin bozulmasına veya sitenin tamamen çökmesine (görüntülenmemesine) neden olabiliyor. Aslında bu konuya daha önce En Yaygın WordPress Hatası başlıklı makalemde değinmiştim ama burada biraz daha geniş ve anlaşılır bir şekilde açıklamak istiyorum.

Bir dosyada BOM olup olmadığını W3C Internationalization Checker sitesinden kontrol edebilirsiniz.

Normalde BOM gözle görülmez. UTF-8 kodlamasında BOM’un varlığı zorunlu değildir. Bununla birlikte, BOM hala UTF-8 ile kodlanmış metinde kendiliğinden, yan ürün olarak oluşabilir. Windows’da Not Defteri (Notepad) çoğunlukla bu hataya sebep olur. Çünkü, dosya üzerinde çalışma bittikten sonra, BOM’suz kayıt yapmaya olanak vermez.

UTF-8 BOM işareti, bazen PHP komut dosyalarında (özellikle de içerdiklerinde) sorunlara neden olan bir Unicode karakteridir, çünkü HTTP başlıklarının tarayıcıya erken gelmesine neden olabilir.

BOM UTF-8 ile birlikte ortaya çıkmış olup dosyanın UTF-8 olduğunu gösteren bir işarettir. Bir dosyanın yapısını yazı düzenleyicinizde UTF-8′e çevirirseniz bu işaret kendiliğinden dosyanın en başına eklenir. Peki nasıl bir şeydir bu BOM işareti derseniz şudur: ï»¿

Sebep Olduğu Problemler

Öncelikle başlık (header) meselesi sorunudur. Tarayıcıda ilk görüntülenmesi gerekenler başlıklardır. Fakat bu kod sayfanın en başına eklendikleri için başlıklardan önce görüntülenirler ki bu durumda bir hata mesajıyla karşılarsınız.

Warning: Cannot modify header information – headers already sent by …

Diğer bir sorun internet explorer’da kodu görmeseniz bile bir satırlık bir alan işgal eder ve siteniz üstten bir satır aşağıya iner. Dilediğiniz kadar css ile sıfırlamaya çalışsanızda yukarıdaki boşluğu bunu başaramazsınız çünkü orada BOM vardır.

Editörün Önerisi >>  Yandex.ru çerezi: Yandex.ru çerezini bilgisayardan nasıl silebiliriz?

Sayfanızda Türkçe karakterlerin tamamen bozuk görünmesine neden olabilir.

Problemin Çözümü

Çözüm-1:

PHP dosyalarınızın BOM içermediğinden emin olmak için şu adımları izleyin:

  • Bedava metin editörü olan Notepad++ programını download edin ve kurulumu tamamlayın.
  • Doğrulamak veya düzeltmek istediğiniz dosyayı Notepad ++ ‘da açın.
  • Üst menüden Encoding > Convert to UTF-8 (BOM’suz seçenek) seçeneğine tıklayın.
  • Dosyayı kaydedin. Hepsi bu kadar! İşte, artık UTF-8 kodlamasında BOM (Byte Order Mark) işareti olmaksızın geçerli bir UTF dosyanız vardır.

Çözüm-2:

Çözüm oldukça basit. Dosyanızı UTF-8′e çevirirken yazı düzenleyicinizde BOM olmadan UTF-8 seçeneğini seçmelisiniz. Maalesef bunu yapmak için direkt kodları silemiyoruz çünkü yazı düzenleyiciler bu karakterleri görmüyor. Biz dosyanın dil yapısını değiştirerek bu işaretten kurtulacağız. En çok kullanılan iki düzenleyici olan Notepad2 ve Notepad++ yazılımlarında resimle nasıl bu işaretten kurtulabileceğinizi gösterelim.

Notepad++ (Benim Tercihim)

Notepad++ programında Format altında BOM olmadan UTF-8 (UTF-8 without BOM)’u seçerek sorunu giderebilirsiniz.

UTF-8 BOM

Not 1:

Mevcut bir dosya ANSI formatında ve Türkçe karakter içeriyorsa onu dönüştürmek için Dönüştür (UTF-8 Without BOM) seçeneğini seçerseniz karakterleriniz bozulmadan BOM’suz UTF-8 formatında kodlamaya geçebilirsiniz.

Not 2:

Türkçe karakterli dosyayı dönüştürmenin uzun yolu ise şu şekildedir. Önce Ctrl+A ile tüm yazıyı seçip Kes’in. Ardından dosyanın formatını resimlerdeki gibi değiştiri. Sonra kestiklerinizi tekrar yapıştırın ve dosyanızı kaydedin.

Notepad2

Notepad2 programında File->Encoding altında sadece UTF-8 olan seçeneği seçerek sorunu çözebilirsiniz.

UTF-8 BOM

Not 1:Bu Bu makaleyi neden şimdi yazdığımı merak ediyorsanız söyleyeyim. XHTML standartları nedeniyle W3′ün HTML Validator sayfasına işim düşmüştü. Orada şöyle bir mesajla karşılaştım.

The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.

Yani diyor ki BOM’lu dosyaların bazı düzenleyicilerde ve tarayıcılarda problem çıkardığı bilinmektedir. Bu nedenle BOM daha iyi desteklenene kadar bu işareti kullanmaktan kaçınsanız iyi olur.

Editörün Önerisi >>  UTF-8 BOM (Byte Order Mark) Nedir? Web sitelerine nasıl zarar verir?

Not 2: BOM, özellikle tema Türkçe’leştirmelerinde dikkat edilmesi gereken bir husus.

BOM hakkında söyleyeceklerim bu kadar. Daha dikkatli yazılmış kodlarda görüşmek dileğiyle…

Kaynak:

UTF-8 BOM (Byte Order Mark) Nedir?

Makalenin Yazarı Erhan Yakut kimdir?

Genç yaşlarda programlama ile tanıştı ve Delphi ile başladığı programlama macerasına şuanda PHP, SQL, Javascript, AJAX, CSS, XHTML teknolojileri ile devam etmektedir. Elektrik – Elektronik bölümü mezunu olan “yakuter” 2006 yılından itibaren yakuter.com ‘un yazarlığını yapmaya başlamıştır.


Yazan | 2017-04-19T13:34:09+00:00 Nisan 19th, 2017|Bilim ve Teknoloji|UTF-8 BOM (Byte Order Mark) Nedir? Web sitelerine nasıl zarar verir? için yorumlar kapalı

Yazar Hakkında:

K.K.K’lığından emekli topçu kurmay albay. Kara Harp Okulu, Kara Harp Akademisi ve Silahlı Kuvvetler Akademisi’nden mezun. 11 yıldan fazla süreyle NATO'da görev yaptı. Çok iyi seviyede Almanca ve İngilizce bilir. NATO, Küresel Siyaset, Küresel Terörizm konularında serbest yazar.
%d blogcu bunu beğendi:
/* Omit closing PHP tag to avoid "Headers already sent" issues. */