Sitenizde "Öğrenci" yazması gereken yerde "Öğrenci" yazıyor. Ürün açıklamalarında ş harfleri kutucuğa dönmüş. Bu görüntü panik yaratır ama iyi haber şu: veriniz büyük ihtimalle bozulmadı. Sadece yanlış alfabeyle okunuyor.
Karakter kodlaması, harflerin bilgisayarda hangi sayılarla temsil edildiğinin kuralıdır. Metin bir kuralla yazılıp başka bir kuralla okunduğunda ortaya bu garip işaretler çıkar. Yani sorun font değil, çeviri.
Zincirdeki Dört Halka
Bir harfin ekrana düzgün gelmesi için dört yerde aynı kuralın geçerli olması gerekir:
- Veritabanı ve tablolar: Verinin saklandığı yerdeki kodlama ve karşılaştırma ayarı.
- Bağlantı: Site veritabanına bağlanırken hangi kodlamayla konuşacağını söyler. En sık atlanan halka budur.
- Dosyalar: PHP ve şablon dosyalarının kendisinin hangi kodlamayla kaydedildiği.
- Sayfa başlığı: Tarayıcıya "bu sayfayı şu kuralla oku" diyen bilgi.
Dördü uyumluysa sorun çıkmaz. Biri farklıysa Türkçe harfler bozulur. Bugün doğru olan kurulum, dört katmanda da Unicode tabanlı ve dört baytlık karakterleri destekleyen kodlamayı kullanmaktır — bu aynı zamanda emoji ve nadir karakterlerin de düzgün saklanmasını sağlar.
Sorun Ne Zaman Ortaya Çıkar?
- Site taşındığında. Yedek alınırken bir kodlama, geri yüklenirken başka bir kodlama kullanılırsa metin bozulur. En yaygın senaryo budur.
- Eski bir siteden içerik aktarılırken. Yıllar önce farklı bir kodlamayla kurulmuş veri, yeni sisteme olduğu gibi aktarılırsa okunamaz hale gelir.
- Excel veya CSV'den toplu ürün yüklenirken. Excel'in varsayılan kaydı çoğu zaman Unicode değildir; dosya doğrudan içe aktarılırsa binlerce ürün adı bozulur.
- Sunucu veya veritabanı sürümü değiştiğinde. Varsayılan kodlama ayarı değişebilir ve yeni kayıtlar eskilerden farklı saklanmaya başlar.
Bozulmanın İki Türü — Karıştırmayın
Doğru teşhis için bu ayrım kritik:
Tür 1: Veri doğru, gösterim yanlış. Veritabanında metin düzgün duruyor ama sayfa yanlış kodlamayla sunuluyor. Bu en kolay vakadır; sayfa ve bağlantı ayarı düzeltilince her şey yerine oturur, veriye dokunulmaz.
Tür 2: Veri gerçekten bozulmuş. Yanlış aktarım sırasında karakterler yanlış hâlleriyle kaydedilmiştir. Burada sayfa ayarını düzeltmek işe yaramaz; verinin kendisinin dönüştürülmesi gerekir. Bu işlem geri dönüşü olmayan bir müdahaledir ve mutlaka yedekle yapılmalıdır.
Hangisi olduğunu anlamanın pratik yolu: aynı metni yönetim panelinde ve ön yüzde karşılaştırmak. Panelde düzgün, ön yüzde bozuksa Tür 1; her ikisinde de bozuksa Tür 2'dir.
Sık Yapılan Üç Hata
1. Bozulmuş metni elle düzeltmek. Birkaç sayfa için mümkün görünür ama binlerce kayıtta imkânsızdır ve asıl sebep durduğu için yeni kayıtlar da bozulmaya devam eder.
2. Sayfa kodlamasını zorla değiştirmek. Bozuk veriyi doğru gösteren bir ayar bulmak mümkün olabilir, ama bu yama arama motorlarında ve dışa aktarımlarda yeni sorunlar üretir.
3. Dönüştürmeyi yedeksiz yapmak. Karakter dönüşümü yanlış parametreyle çalıştırıldığında veri geri dönülemez biçimde bozulur. Bu işlem her zaman önce kopya üzerinde denenmelidir.
Kalıcı Çözüm Nasıl Kurulur?
Sıralama şudur: önce yedek. Sonra teşhis — hangi tür bozulma olduğu belirlenir. Tür 1 ise bağlantı ve sayfa kodlaması düzeltilir, iş biter. Tür 2 ise veri kopya ortamda dönüştürülür, sonuç kontrol edilir, ancak sonra canlıya uygulanır. Son adımda dört katman da aynı kodlamaya sabitlenir ki sorun bir daha çıkmasın.
URL tarafını da unutmamak gerekir: Türkçe karakterli başlıklardan üretilen adresler, adres yapısında sorun çıkarabilir. Doğru yaklaşım, adreslerde Türkçe karakterleri karşılıklarına çevirmek (ş→s, ğ→g, ı→i gibi) ve mevcut adresleri değiştirirken eski adresleri yeniye yönlendirmektir. Slug değişikliği yönetilmediğinde 404 hataları kaçınılmazdır.
Ne Zaman Uzman Gerekir?
Bozulma veritabanına işlemişse ve kayıt sayısı yüksekse kendi başınıza denemeyin: yanlış bir dönüştürme, düzeltilebilir bir sorunu kalıcı veri kaybına çevirebilir. E-ticaret sitelerinde ürün adları, adresler ve fatura bilgileri etkileniyorsa bu doğrudan operasyonel bir risktir.
Taşıma Sırasında Bozulmayı Önlemek
Karakter bozulmasının en sık sebebi site taşımasıdır ve önlemek, sonradan düzeltmekten çok daha kolaydır. Taşımada dikkat edilecekler:
- Yedeği ve geri yüklemeyi aynı kodlamayla yapın. Dışa aktarma sırasında bir kodlama, içe aktarma sırasında başkası kullanılırsa metin bozulur. Bu, en yaygın tek hatadır.
- Panel araçlarına körü körüne güvenmeyin. Bazı yedekleme araçları kodlamayı sizin adınıza seçer ve seçim her zaman doğru olmaz. Küçük bir tabloyla test etmek beş dakika sürer.
- Taşıma sonrası hemen kontrol edin. İçinde ş, ğ, ı, ö, ç geçen birkaç kaydı taşımadan hemen sonra açıp bakın. Bozulmayı ilk gün fark etmek, bir ay sonra fark etmekten çok farklıdır: arada yeni veri girilmemiş olur.
- Tablo bazlı değil, veritabanı bazlı ayar yapın. Yalnızca yeni tablolar doğru kodlamayla oluşturulursa eski tablolar geride kalır ve karışık bir yapı ortaya çıkar.
Sıralama ve Arama: Kodlamanın Görünmeyen Etkisi
Karakter kodlaması yalnızca harflerin görünümünü değil, sıralama ve arama davranışını da belirler. Türkçe için pratik sonuçları şunlar:
- Alfabetik sıralama yanlış olur. Yanlış karşılaştırma ayarında "ç" harfi "c"den sonra değil, listenin sonunda çıkabilir. Ürün ve isim listelerinde bu doğrudan görünür bir hatadır.
- Arama sonuçları eksik döner. "Ogretmen" yazan ziyaretçi "öğretmen" kayıtlarını bulamayabilir. Site içi aramanın işe yaramaz görünmesinin sebebi çoğu zaman budur.
- Büyük-küçük harf dönüşümü hatalıdır. Türkçedeki i/İ ve ı/I ayrımı, doğru ayar yapılmadığında bozulur; başlıkların otomatik büyütülmesi tuhaf sonuçlar üretir.
Bu yüzden kodlama seçimi kozmetik bir tercih değildir. Doğru kurulmuş bir sistemde hem görünüm hem sıralama hem de arama birlikte düzelir; yamalarla ilerlendiğinde ise biri düzelirken diğeri bozulur.
Bu İşi Biz Yaparsak Ne Kadar Tutar?
Fiyatı tahmin etmenize gerek yok, bize sormanıza da. Sitemizdeki hesaplayıcıda ihtiyacınız olan kalemleri işaretliyorsunuz, toplam anında ekranda çıkıyor. Form doldurmak, teklif beklemek yok.