İçerik Kodlama Hatası ve Çözümü

Programlama25/12/2011


Sitemde bugünden itibaren gzip sıkıştırmayı kullanmaya başladım. Normalde 25kb olan olan sayfa boyutu 5,89 kb'ye düştü. Hem kota hem de hız açısından siteye faydası olacağı kanaatindeyim. Zira normalde 2,5 saniyede olan indirme süresi 1,16 saniye ye düştü. Gzip veya deflate algoriztmalarının bilindiği üzere her zaman avantaj sağlamadığını düşünürsek benim sitede de işe yaradı diyebilirim(site boyutu her zaman düşecek diye bir kaide yok içeriğe göre boyut artabilir de).

Her neyse bu geçiş işleminden sonra siteyi şöyle bir kontrol edeyim dedim. Sıkıştırma işleminde kullalnılan fazla boş satırlar bazen sorun çıkartabiliyordu. Site içeriğini ilk önce gereksiz bu verilerden temizledikten sonra sıkıştırma işlemini yaptırarak sorunsuz bir geçiş yaptım. Taki akşam gelen bir mesajla site arama kısmının çalışmadığını öğrene dek. Denedim gerçekten de enteresan bir hata veriyordu.

Hata Ekranı

Hata veren site kodlarını inceledim ama sorun göremedim. Acaba sıkıştırma işleminden mi kaynaklı diye düşünüp sıkıştırma işlemini devre dışı bıraktığımda hatanın düzeldiğini gördüm. 

Aklıma Ansi - Utf-8 geçişlerinde yaşadığım sayfa kodlama sorunu geldi. Acaba bundan mıdır diye incelediğimde kodlamanın Utf-8 + BOM diye birşey olduğunu gördüm. BOM(Byte Order Mark) hemen hemen her dosya formatında olan ve dosya içeriğinin ne olduğunu sistemin alamasını sağlayan dosya bilgisinin hemen başındaki ufak bilgi demek. Her ne kadar Windows dosya uzantısına baktasa Linux istediğin kadar dosya uzantısını değiştir bu bilgiyi dikkata alır.

Her neyse benim hata veren sayfam Utf-8 kodlamasını kullanıyor ama dosya içeriğinde gözükmeyen (Hex kodların başında) dosyanın Utf-8 olduğunu bildiren  tarzında bir işaret varmış. Dosya sıkıştırma kullandığım için sıkıştırma işlemine giren bu fazladan bilgi oluşturulan dosyanın broswer tarafından anlaşılmasını engelliyormuş. Sebebiyse browser'a giden ilk bilgi header olması gerekirken benim sayfada BOM bilgisi oluyordu. Dolayısıyla browser(haklı olarak - "Yav kardeşim bu ne ya ... dercesine) hata veriyordu. BOM bilgisini silmek için EditPlus'dan farklı kaydet deyip sadece UTF-8 diye kaydedip dosyamı server'a gönderip sıkıştırma işlemini tekrar başlattım.

Çözüm

Ve hata düzeldi. Demekki neymiş Gzip veya Deflate yapacağımız sayfaların BOM bilgilerini kaldıracakmışız.

Bir başka sorunda görüşmek üzere...

Etiketler: