UTF-8 BOM (Byte Order Mark) Nedir?

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…

Benzer Yazılar

yakuter

Erhan Yakut

www.yakuter.com

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.

Bu Yazıya Ait Yorumlar

Minyx 2.0 Lite Türkçe WordPress Teması | BekirJem WebLog

Minyx 2.0 Lite Türkçe WordPress Teması | BekirJem WebLog
05 Eylül 2007

[...] 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ü [...]

Bu karakterler niye

Bu karakterler niye
10 Eylül 2007

[...] BOM UTF-8 BOM (Byte Order Mark) Nedir? __________________ phpBB3 seo – phpBB T

x-treme

x-treme
11 Eylül 2007

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 :)

Berker PEKSAĞ

Berker PEKSAĞ
13 Şubat 2008

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

Minyx 2.0 Lite Türkçe WordPress Teması | Bekir Cem WebLog

Minyx 2.0 Lite Türkçe WordPress Teması | Bekir Cem WebLog
14 Mart 2008

[...] 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 [...]

iksdf

iksdf
06 Mayıs 2008

eyv. işime yaradı..

Evren YALÇIN

Evren YALÇIN
07 Haziran 2008

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…

yakuter

yakuter
08 Haziran 2008

malesef kod görünmemiş. Bana mail ile gönderirseniz makaleye ekleyebilirim.

çağlar

çağlar
15 Haziran 2008

teşekkürler yardımın işe yaradı

vatan

vatan
26 Haziran 2008

hocam benim notepad++ da file-> encoding diye bir menu yok.

yakuter

yakuter
26 Haziran 2008

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

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

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

[...] 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 [...]

Fatih

Fatih
22 Temmuz 2008

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.

yakuter

yakuter
22 Temmuz 2008

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

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

Muhittin Özer » PHP ve MySQL’de sık yaşanan Türkçe karakter problemleri
27 Kasım 2008

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

yakuter » Yakuter.Com Facebook Grubu

yakuter » Yakuter.Com Facebook Grubu
03 Ocak 2009

[...] 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 [...]

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

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

[...] 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 [...]

nihilanth

nihilanth
21 Şubat 2009

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?

yakuter

yakuter
22 Şubat 2009

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

fatih taşdelen

fatih taşdelen
01 Mart 2009

ç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

aydın

aydın
22 Nisan 2009

teşekkürler,hata raporu doğrultusunda geldim pek işime yaradı makale

ilyas TEKER

ilyas TEKER
02 Haziran 2009

22 senedir BOM suz yaşamışım meğer : ) 1 haftadır çözemediğim problemi BOM ile çözdüm. Biraz araştırdım nette meğerse sorun olabilecek kadar kurnazmış BOM.

Üstelik pluginlerin de çalışmasını değiştirebildiğini biliyor muydunuz?

Fikret

Fikret
21 Temmuz 2009

Teşekkürler.Makale çok aydınlatıcı oldu.

İstanbul Yemek Şirketleri

İstanbul Yemek Şirketleri
02 Eylül 2009

Walla kardeş harikasın. Şu makalen olmasaydı günlerim bu problemi çözmekle geçecekti. 5 dk’da tüm sistemi toparladım sayende.

Allah razı olsun.

Çağlar

Çağlar
22 Ekim 2009

Teşekkürler.

Mustafa DEMİR

Mustafa DEMİR
07 Kasım 2009

Sormak istediğim husus sayfamı BOM’lu UTF-8 yaptığım anda gerçekten sıkıntı yaratabilir mi?

Bu arada çok teşekkür ederim Erhan bey. Gerçekten çok yararlı ve işime yarayan bir makale oldu. Kaç gündür header ve session hataları ile uğraşırken ilaç gibi geldi.

Tekrar teşekkür ediyorum.

yakuter

yakuter
10 Kasım 2009

İnanın bana ne zaman bu düzeltmeyi unuttuysam sorun yaşadım :)

onur

onur
27 Kasım 2009

bilgi için sağol şimdi deniyorum umarm sorun çözülür.

kral

kral
21 Aralık 2009

Öncelikle bu konuya acıklık getirdiginiz için çok teşekkur ederim.Bendede ayni sorun vardi wp temam ei6 da sayfanın kaynak kodlarına bakınca karekter hatalari veriyordu.Anlattıgınız şekilde dosyaları düzelttim fakat sayfalardaki sorun halolmasina ragmen indexte hala ayni sorunu veriyor.Ayrica nihilanth arkadaşında dedigi gibi bazen notepad++ ile dosyalari düzeltiyorum tekrar baktıgımda yine ANSI olarak okuyor.Bir kaç denemeyle bunuda aştım ama indexte hala ayni sorun bulunuyor.Bu durum için yapmamız gereken başka bir bişey varmı?.Şimdiden teşekkurler kolay gelsin.

Behçet MUTLU

Behçet MUTLU
26 Aralık 2009

Harika bir makale olmuş, ellerine sağlık. Oldukça dikkat edilmesi gereken ve karşılaşsak bile bir türlü sebebini bilemediğimiz bir sorundu. Ben de kendimce farklı çözümlerle çözüyordum bunu, örneğin; yeni bir dosya açarak tüm kodları oraya kopyalamak… Karakter kodlaması sorunları ne zaman düzeltilecek çok merak ediyorum. Yazılım geliştirirken karakter kodlamalarındaki hataların da göz önünde bulunması gerekiyor bence. Günümüz yazılım mühendisleri pek te önemsemiyor ancak sizin de belirttiğiniz gibi, çok büyük sorunları yanında getirebiliyor.

Tanerkaymaz

Tanerkaymaz
03 Şubat 2010

Merhaba, ben sitemi HTML Validator sitesinde tarattırdığımda şöyle bir hata mesajı ile karşılaştım.

Sorry, I am unable to validate this document because on line 132 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.

The error was: utf8 “xFE” does not map to Unicode

Bu hatayı araştırırken açtığınız konuya denk geldim ve dediklerinizi uyguladım yanlız uygulamadan sonra sitenin üzerinde boşluk oluştu aslında tam tersi olması gerekliydi ancak dediklerinizi yapınca meydana geldi şimdi BOM’da yapsam UTF-8 de yapsam sitenin üzerinde 1 satır boşluk oluyor.Birinci sorum bu olsun aslında konunuzla tam alakalı değil ama HTML Validator sitesinden aldığım hata hakkındada bilginiz varsa ve paylaşırsanız sevinirim.

yakuter

yakuter
03 Şubat 2010

@Taner Bey, sitenizi tarayıcıda açıp kaynak koduna bakın. &copy, • gibi karakterler kod ile değil de doğrudan yazılmışsa sorun yaratırlar çünkü bunlar uygun UTF 8 karakterler değillerdir. Bu konuda daha fazla yardım için SEO Teknikleri forumuna başvurabilirsiniz.

Dosyanın üzerinde boşluk olması konusunda da dosyadan silemiyorsunuz büyük ihtimalle malum kodu. Tavsiyem yeni bir php dosya yaratın ve içi boş ike UTF-8 yapın. Ardından diğer dosyalardaki metni kopyalayıp yapıştırın ve dosya ismini olması gerekenle değiştirin. Düzelir sanırım.

Anonim
28 Mart 2010

[...] [...]

kadir

kadir
28 Mart 2010

3 kez sitenin tüm kodlarını gözden geçirmeme sebep olan satır atlamanın header’deki utf8 bom’undan kaynaklandığını tesadüfen farkettikten sonra yaptığım aramada bu nadide bilginize ulaştım. geç oldu ama faydalı oldu, teşekkür ederim.

Samet Çubukcu

Samet Çubukcu
14 Mayıs 2010

Save with BOM ne işe yarar öğrendik teşekkürler.

Kahraman

Kahraman
26 Haziran 2010

Sitemde wp kurulu ve makalede de dediğiniz gibi üstte bir boşluk oluyor ve w3.org baktığımda sadece 1 warning görünüyor.

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

Notepad++ da açın demişsinizde ben hangi dosyayı açacağım. Temanın bütün dosyalarınımı açmam gerekiyor..

yakuter

yakuter
26 Haziran 2010

Temanın tüm dosyalarında bu işlemi uyglamanızda fayda var.

Kahraman

Kahraman
26 Haziran 2010

Notepad++ programını indirip dosyayı açtım ama zaten programda "UTF-8 without BOM" seçili durumda. değiştirip tekrar seçince de karakterler falan bozuluyor. Ne yapmam gerekiyor iki gündür w3 de hataları gidermeye çalışıyorum. Şimdi bir tek bu kaldı.

yakuter

yakuter
26 Haziran 2010

Tüm dosyalarınızı kontrol edin. O da olmazsa Ultra Edit gibi bir düzenleyici programı deneyin.

kahraman

kahraman
27 Haziran 2010

Yardımlar için çok teşekkür ederim. Şu anda w3 de hiçbir hata görünmüyor ama sitenin en üstündeki boşluk hala gitmedi. Onu nasıl düzeltebilirim.

yakuter

yakuter
27 Haziran 2010

Yukarıda anlatılan şeyleri yaparak düzeltebilirsin :) Özellikle header.php dosyası.

kahraman

kahraman
27 Haziran 2010

üstteki işlemleri uyguladım zaten :) Şu anda sitede hiçbir hata falan yok. bir tek en üst satırda boşluk var. :)

yakuter

yakuter
27 Haziran 2010

O halde bilemiyorum malesef. Mesele herhangi başka bir şey olabilir.

kahraman

kahraman
27 Haziran 2010

ben biraz daha araştırayım o zaman. Yardımlar için tekrar teşekkürler…

fatih

fatih
03 Temmuz 2010

Bir dizi teşekkürün altına bir teşekkür de ben edeyim. Üç yıldır bu işle uğraşıyorum ufak ufak ilerliyorum. UTF-8 işime geliyor açıkcası, o yüzden seviyorum. Ama o bir satır boşluk beni deli etmişti. Google bot o bir satırı – şeklinde okuyor, sayfa kaynağına bakınca da sayfanın başında bir adet lanet olası “-” görüyordum. Bunu kendi yöntemlerimle çözdüm. Bütün dosyaları DRW ile yaratıp, DRW ile yaratılmayanları da kodları kesmek suretiyle DRW ile yeni bir dosya açıp yeniden oluşturmak. Bunu yaptığımda o lanet – görünmez olmuştu. Sorun da notepad++ ‘da kaynaklanıyor diyordum kendi kendime bunları bilmezden evvel. Meğer ben winthout BOM seçmezmişim de ondan olurmuş.

Abdullah

Abdullah
13 Temmuz 2010

Tam 4 saattir denemediğim yöntem araştırmadığım kaynak kalmadı çok teşekkür ediyorum bu pek bilinmeyen ama ÖNEMLİ olan bilgiyi bizlerle paylaştığın için..

Kalpsiz

Kalpsiz
11 Ağustos 2010

Ozamanda Türkçe karakter hatası veriyor??

Murat KÖKER

Murat KÖKER
08 Eylül 2010

güzel bir makale olmuş teşekkürler.

Cihan

Cihan
29 Eylül 2010

Allah razı olsun, başka hiçbirşey demeye gerek yok. Kendim çok uğraştım, sonra sizin makalenizi buldum ve anında sorun çözüldü. Çok teşekkürler…

oktay

oktay
17 Kasım 2010

Merhaba.
Css ve PHP dosyalarını notepad++ ile tanışana kadar notepad ile düzenliyordum. Türkçe karakter sorunu yaşamamak için de belgeleri ANSI formatından UTF-8 formatına dönüştürüp kaydediyordum. Bu da sayfalarda kaymalara neden oluyordu haliyle. ben de tekrar css ile oynayarak düzeltmeye çalışıyordum. Son 1.5 gündür de bu sorunla uğraşıyordum :)

Burada bu çözümü bulmak herşeyi kökünden çözdü. Çok teşekkür ederim verdiğiniz bilgiler için. Kolay gelsin.

Serkan

Serkan
27 Kasım 2010

Çok yararlı bir makale olmuş.

ikizsohbet

ikizsohbet
09 Aralık 2010

Hocam çok yararı oldu anlatıklarınızı mükemmel ders olmuş gerçekten bilmeyenlere bu hatayı birden fazla sitemde alıyordum şuanda hepsini düzeltim tekrardan teşekkürler

tasarhane

tasarhane
07 Nisan 2011

notepad++ da encoding kısmında "encode in" ve "convert to" farkı var.
dosyanızı düzenledikten sonra değiştirmek isterseniz "convert to" kısmını kullanırsanız iyi olur.
yani;
convert to utf-8 without bom

tasarhane

tasarhane
07 Nisan 2011

Bir de setting>preference penceresine girince new document sekmesindeki encoding bölümünden utf-8 without bom seçeneğini işaretlerseniz yeni dosyalarınız bu ayarla açılır.
kutucuğuda işaretleyin sonradan açtıklarınızda otomatik çevirilsin.

Göktürk

Göktürk
20 Mayıs 2011

ben ne yaptıysa olmuyor
yıllardı notepad++ kullanırım ama kullandığım wp temsında unucode ansi görünen yer
ne yaparsam değişmiyor.
dw ile bakıyorum kodlama utf-8 notepad ile bakıyorum unicod.

sitemde türkçe karakterler görünmüyor.bozuk çıksa keşke.hiç çıkmıyor.
temayada okadar çok hayranımki ne yapacağım bilemiyorum.

konu hakkında destek verebilecek arkadaşlar bekleniyor.
saygılarımla.

yakuter

yakuter
04 Ağustos 2011

Valla konu Google olunca ne desek boş. Yani sorun olmaz derim, olur sonra ben arada kalırım :)

Peki ya sizin düşünceleriniz?

Facebook Grubumuz Twitter Wordpress Linked in Google Friendfeed RSS Beslemesi Feedburner RSS

Yakuter web tasarım, yazılım geliştirme, IPhone uygulamaları gibi konular da Üreticy'yi öneriyor.

TAMindir.com - Yeni Programlar

iPadian - Windows

Masaüstünüzü iPad arayüzü şeklinde kullanabilmeniz ve uygulama merkezi sayesinde sunduğu onlarca uyg...

ClipGrab - Windows

YouTube ve diğer popüler çevrimiçi video sitelerinden video indirmek istiyorsanız kullanabileceğiniz...

Elder Scrolls V Skyrim Duvar Kağıtları - Windows

Elder Scrolls V Skyrim için Bethesda Softworks tarafından hazırlanmış duvar kağıtları....

Undelete 360 - Windows

Kaybettiğiniz, yanlışlıkla sildiğiniz veya virüslerden mağdur olduğunuz dosyalarınızı bu programla k...

Knights of the Old Republic 2 Duvar Kağıtları - Windows

Star Wars Knights of the Old Republic 2 oyunu için hazırlanmış en güzel duvar kağıtlarını sizin için...

Abonelik

Yazılan yazılardan ilk siz haberdar olun, yeni yazılar e-postanıza gönderilsin.

yakuter.com © 2006-2010 Erhan Yakut. Site tasarım Cenk Akyıldız - (Tema Bilgisi).
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.