O Tuhaf 'ç' Karakterleri Nereden Çıkıyor?
Bir dosyayı açtığınızda ç yerine ç görmek can sıkıcı ama aslında oldukça mantıklı bir sebebi var.
Özet
Bu bozulmaya mojibake deniyor, bir bug değil, iki farklı karakter kodlamasının birbirine karışması.
Adım adım
- Bir metin dosyası kaydedildiğinde, her karakter belirli bir kodlama standardına göre bayt dizisine çevrilir. Türkçe karakterler için en yaygın standart UTF-8.
- Sorun şu anda başlıyor: dosya UTF-8 ile kaydedilmiş ama başka bir program onu farklı bir kodlamayla (genelde Windows-1254 ya da Latin-1) okumaya çalışıyor. UTF-8'de 'ç' harfi 2 baytla temsil edilirken, yanlış kodlama bu 2 baytı 2 ayrı karaktermiş gibi yorumluyor — işte ç böyle ortaya çıkıyor.
- En sık karşılaşılan durumlar: bir CSV dosyasını Excel'de açmak, eski bir e-posta istemcisinden kopyalanan metin, ya da bir web sitesinin kaynak kodunda charset etiketinin eksik olması.
- Düzeltmenin en garantili yolu, dosyayı doğru kodlamayla yeniden açmak (mümkünse). Ama elinizde sadece bozulmuş metin varsa, yaygın bozulma kalıpları (ç→ç, ü→ü, ı→ı gibi) bilinen, sabit eşleşmeler olduğu için bunları geri çevirmek genelde mümkün.
- Kalıcı çözüm için: kod yazıyorsanız her yerde (veritabanı bağlantısı, HTML meta etiketi, dosya kaydetme) UTF-8'i açıkça belirtin. 'Bir gün kendiliğinden düzelir' diye bir şey yok, kodlama tutarlılığı elle sağlanması gereken bir şey.