İçeriğe Atla
POPÜLER ARAMALAR: reklam, pazarlama, ,
kod, wordpress, eklenti, web, teknoloji,
programlama, tasarım, ajax, linux, Pardus, blog
Feedburner RSS
16 Temmuz 2007

UTF-8 BOM (Byte Order Mark) Nedir?

Etiketler: , , , , ,
Kategori CSS/XHTML/W3C, GENEL BİLGİ | 32 Yorum

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++ (Benim Tercihim)
Notepad++ programında Format altında BOM olmadan UTF-8 (UTF-8 without BOM)’u seçerek sorunu giderebilirsiniz.
Notepad++

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.
Notepad2

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. Daha dikkatli yazılmış kodlarda görüşmek dileğiyle…


Destek ve Bağış



Başka Yazıya Geç

Yorumlar

“UTF-8 BOM (Byte Order Mark) Nedir?” için 32 Yorum

Sayfalar: « 1 2 3 4 » Hepsini Göster

  • 11 yakuter

    @vatan, son sürüm notepad++ indir, olması gerekli.

  • 12 Muhittin Özer » Blog Arşivi » PHP ve MySQL’de sık yaşanan Türkçe karakter problemleri

    [...] kodlamasını BOM olmadan seçeneğiyle yazmak. Bu konuda detaylı bilgiyi yakuter’in blogundaki UTF-8 BOM (Byte Order Mark) Nedir? yazısında [...]

  • 13 Fatih

    Arkadaşım sana çok ama çok teşekkür ederim.
    Yaptığım tüm işlemlerde veritabanı ayarı gibi herşey UTF 8 olmasına rağmen , kodlarımı yazdığım dosya kodlaması BOMLU UTF8 olduğu için hep hata alıyordum.

    Sayende bunu öğrendim,çok ama çok teekkür ederim.

  • 14 yakuter

    Ne demek Fatih, işinize yaradıysa ne mutlu bana ;)

  • 15 Muhittin Özer » PHP ve MySQL’de sık yaşanan Türkçe karakter problemleri

    [...] BOM olmadan seçeneğiyle yazmak. Bu konuda detaylı bilgiyi yakuter‘in blogundaki UTF-8 BOM (Byte Order Mark) Nedir? yazısında [...]

  • 16 yakuter » Yakuter.Com Facebook Grubu

    [...] verdim. Durum böyle olunca kimi makalenin gerçekten bir ihtiyacı karşıladığını (örn. UTF-8 BOM (Byte Order Mark) Nedir?) kimi makalenin ise nerdeyse sadece benim tarafımda ilginç bulunduğunu gördüm. Daha doğru [...]

  • 17 WordPress’te Türkçe Karakter Hataları · Yakup Gövler'in Not Defteri

    [...] bir metin dosyası gibi düzenlenmek istenmesidir. Halbuki WP dosyaları UTF-8 formatında ve BOM olmadan kodlanması gereken dosyalardır. Eğer karakter hatası siz bir dosyayı düzenledikten [...]

  • 18 nihilanth

    Merhaba. hem tema dosyalarını hem eklentileri utf8-bomsuz olarak kodluyorum notepad++ da ve kaydedip upload ediyorum serverıma ancak baktım türkçe karakter sorunu düzelmedi.

    sonra tekrar bakayım dedim. notepad++ da açtım dosyayı. bir baktım hala kodlama ANSI olarak gözüküyor. yani değiştir deyip kaydettiğim halde bir sonraki açışta yine ansi.. bu sorunu nasıl çözeriz?

  • 19 yakuter

    Dosyayı gönderirken FTP ayarlarından dosya değişiyor olabilir diyeceğim ama tamda emin değilim buna neyin sebep olabileceği konusunda.

  • 20 fatih taşdelen

    çok teşekkür ederim kafayı yemiştim şu w3 ile 3 hata kaldı 1 uyarı şimdi yarın şirkete gittiğimde bu uyarıyı notepad++ da düzenleyeceğim diğer marquee olaylarınıda css kullanarak temizleyip şu html geliştiricileri denilen olaya onaylatmak istiyorum şu siteyi :) saygılarımla

Sayfalar: « 1 2 3 4 » Hepsini Göster


Yorum Yapın

Sponsorlar

Sponsorlar
Günün Notu

Kuvvet ordudur. Düşmanlar milletimizi bağımsızlıktan mahrum etmek için evvela onu ordudan mahrum etmek çarelerine giriştiler. Kumandanlarımıza ve subaylarımıza tecavuz etmeye başladılar. Ordumuzu tamamen lağvederek milletin bağımsızlığını muhafaza için muhtaç olduğu dayanak noktasından mahrum etmeye teşebbüs ettiler. Herhalde ordu düşmanlarımızın birinci taaruz hedefi oldu. Orduyu imha etmek için de mutlaka subayları mahvetmek ve aşağılamak lazımdır. Bundan sonra milleti koyun sürüsü gibi boğazlamakta engeller ve müşkülat kalmaz.

Mustafa Kemal Atatürk

Rastgele Sözler Eklentisi ile oluşturulmuştur.
Facebook Friend Feed Twitter Wordpress Netvibes Linked In RSS Beslemesi

yakuter.com © 2006-2009 Erhan Yakut. Site tasarım fallendesign. Hosting sponsoru WebGrup.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.

WordPress Valid XHTML 1.0 Transitional Valid CSS! php tracker