Aslında ç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.
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.
Sayfanızda Türkçe karakterlerin tamamen bozuk görünmesine neden olabilir.
Çözüm
Çözüm oldukça basit. Dosyanızı UTF-8′e çevirirken yazı düzenleyicinizde BOM olmadan UTF-8 seçeneğini seçmelisiniz. Malesef bunu yapmak için direk 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++ programında Format altında BOM olmadan UTF-8 (UTF-8 without BOM)’u seçerek sorunu giderebilirsiniz.

Notepad2 programında File->Encoding altında sadece UTF-8 olan seçeneği seçerek sorunu çözebilirsiniz.
Eğer ANSI veya BOM’lu UTF-8 formatındaki içi kodlarla ve Türkçe karakterlerle dolu bir dosyayı BOM’suz UTF-8 yapmak için ö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.
Not 1:Bu makaleyi denen ş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.
Not 2: BOM, özellikle tema Türkçe’leştirmelerinde dikkat edilmesi gereken bir husus.
BOM hakkında söyleyeceklerim bu kadar. Umarım biraz olsun sizi aydınlatabilmişimdir.
Sayfalar: « 2 [1] Hepsini Göster
Sayfalar: « 2 [1] Hepsini Göster

yakuter.com © 2006-2008 Erhan Yakut. Site tasarım fallendesign.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.
10 vatan
26 Haziran 2008, 16:23
hocam benim notepad++ da file-> encoding diye bir menu yok.
9 çağlar
15 Haziran 2008, 17:39
teşekkürler yardımın işe yaradı
8 yakuter
08 Haziran 2008, 00:31
malesef kod görünmemiş. Bana mail ile gönderirseniz makaleye ekleyebilirim.
7 Evren YALÇIN
07 Haziran 2008, 01:20
Kendi web sitemdede çıkan BOM sorununu php manuelde gördüğüm bir php kodla çözdüm.
Aşağıdaki kodu sayfanızın en tepesine yerleştiriyorsunuz. Ve sorununuz kökten çözümleniyor.
3 karakterlik utf-8 karakterinin üstüne boş yazıyor.
Saygılarımla…
6 iksdf
06 Mayıs 2008, 20:08
eyv. işime yaradı..
5 Minyx 2.0 Lite Türkçe WordPress Teması | Bekir Cem WebLog
14 Mart 2008, 21:53
[...] Türkçeleştirmek için Minyx 2.0 Lite‘ı uygun gördüm. İlk denememde Yakuter’in BOM uyarısına dikkat etmediğim için türkçeleştirdiğim tema IE’de kötü görüntü verdi. Ama daha [...]
4 Berker PEKSAĞ
13 Şubat 2008, 11:58
İlginç bir çözüm şekli olsa da paylaşmak istedim:
İlk satıra “deneme” gibi bir metin yazdıktan sonra dosyayı kaydedip metni silerseniz BOM illetinden kurtulmuş oluyorsunuz.
3 x-treme
11 Eylül 2007, 02:10
Bir sistemde ajax ile veri çekiyordum;
her defasında “Cannot modify header information - headers already sent by..” hatası alıyordum; ne yaptıysam sonuç değişmedi; ajax ile veri aldığım için karakter kodunu UTF-8 yapmak zorundaydım, dosyayı Notepad programı ile farklı kaydetten UTF-8 yaptığım için dosya bozuluyormuş meğer. Tam yarım günümü yedi bu melet. Ellerine sağlık dostum, sorun bu aptal Notepad’den kaynaklanıyormuş; eburhan’ın anlattığı gibi artık Notepad2 kullanıyorum, mutluyum :)
2 Bu karakterler niye
10 Eylül 2007, 13:55
[...] BOM UTF-8 BOM (Byte Order Mark) Nedir? __________________ phpBB3 seo - phpBB T
1 Minyx 2.0 Lite Türkçe WordPress Teması | BekirJem WebLog
05 Eylül 2007, 15:49
[...] için Minyx 2.0 Lite‘ı uygun gördüm. İlk denememde Yakuter’in BOM uyarısına dikkat etmediğim için türkçeleştirdiğim tema IE’de kötü [...]