Kelime nereden geliyor?
Mojibake (文字化け) Japonca bir kelimedir: “moji” karakter, “bake” dönüşüm anlamına gelir. 1990’larda Japon bilgisayarları Shift_JIS, EUC-JP ve ISO-2022-JP gibi birkaç kodlamayı aynı anda kullanıyordu; bozuk görünen e-postalar ve web sayfaları gündelik bir manzaraydı. Kelime oradan İngilizceye ve tüm dünyaya yayıldı. Türkçede aynı soruna genellikle “Türkçe karakter sorunu” ya da “bozuk karakter” denir.
Mojibake nasıl oluşur?
Bilgisayarlar metni bayt olarak saklar. Kodlama, hangi baytın hangi karaktere karşılık geldiğini belirler. UTF-8’de ş harfi iki bayt olarak saklanır: C5 9F. Bu baytları Windows-1252 ya da Windows-1254 olarak okuyan bir program her bayt için ayrı bir karakter gösterir: C5 için Å, 9F için Ÿ. Sonuç: ÅŸ.
Bu adımda hiçbir şey kaybolmaz – baytlar hâlâ yerindedir, yalnızca yanlış okunmuştur. Bu yüzden mojibake çoğu zaman geri alınabilir: Mojibuster yanlış karakterleri yeniden bayta çevirir ve doğru kodlamayla okur.
Mojibake
Güneşli bir gün, ağaçlar ışıl ışıl – çarşamba görüşürüz
Düzeltilmiş
Güneşli bir gün, ağaçlar ışıl ışıl – çarşamba görüşürüz
Türkçeye özgü ikinci hata: ð, ý, þ
Türkçe metinlerde başka bir hata da sık görülür: Windows-1254 (Türkçe ANSI) ile kaydedilmiş bir dosya Batı Avrupa ayarlarıyla açıldığında ğ, ı, ş harfleri ð, ý, þ olarak görünür – örneğin Ýstanbul ya da þehir. Bu hata özellikle eski altyazı dosyalarında yaygındır: altyazı Türkçe karakter sorunu. Mojibuster bu harfleri de tanır ve düzeltir.
Diğer dillerde mojibake
- Japonca:
こんにちはyerine縺薙s縺ォ縺。縺ッ– Shift_JIS olarak okunan UTF-8. Ayrıntılar Japonca sayfada. - Çince:
你好yerine浣犲ソ– GBK olarak okunan UTF-8. Çincede buna 乱码 (luànmǎ, “karışık kod”) denir. - Rusça:
ПриветyerineПривет– Windows-1251 olarak okunan UTF-8. Ruslar buna “krakozyabry” der. - Batı dilleri:
é,ñya da€yerineé,ñya da€– dünyada en sık görülen biçim.
Tipik nedenler
- Excel, BOM’suz bir UTF-8 CSV dosyasını ANSI olarak açar: Excel’de Türkçe karakter sorunu.
- Bir programın CSV dışa aktarımı ile içe aktarımı farklı kodlamalar kullanır: CSV’de Türkçe karakter sorunu.
- Veritabanı bağlantısı
latin1kullanır, veriler ise UTF-8’dir. - Bir web sitesi ya da e-posta yanlış
charsetbildirir. - Zaten bozuk olan metin bir kez daha dönüştürülür –
ügibi çift mojibake: UTF-8 karakter düzeltme.
Mojibake her zaman düzeltilebilir mi?
Baytlar sağlam kaldığı sürece neredeyse her zaman. Bir program harfleri ? ya da yerine koyma karakteri � ile değiştirdiyse düzeltme mümkün değildir – özgün bilgi artık yoktur. Mojibuster düzeltilebilen her şeyi düzeltir ve kaç yerin kaybolduğunu size söyler.
Mojibake nasıl önlenir?
- Dosyaları UTF-8 olarak kaydedin; Excel için CSV dosyalarını CSV UTF-8 (Virgülle ayrılmış) biçiminde.
- Kodlamayı belirtin: HTML’de
<meta charset="utf-8">, MySQL ve MariaDB’deutf8mb4. - Metni yalnızca bir kez, iki sistemin sınırında dönüştürün.
- İçe aktarırken kodlamayı programın tahminine bırakmayın, kendiniz seçin.
Sık sorulan sorular
Mojibake nasıl okunur?
Yaklaşık “mo-ci-ba-ke” diye, dört hece olarak okunur. Japonca bir kelime olduğu için belirgin bir vurgusu yoktur.
Dosyam bozuldu mu, virüs mü var?
Hayır. Mojibake bir görüntüleme sorunudur; virüs değildir ve çoğu zaman veri kaybı da yoktur. Dosya yalnızca yanlış kodlamayla okunmuştur.
Mojibake ile � arasındaki fark nedir?
ÅŸ gibi mojibake hâlâ özgün baytları içerir ve düzeltilebilir. � karakteri ise bir programın bir baytı okuyamayıp yerine koyduğu işarettir – o harf kaybolmuştur.
Metnim bir sunucuya yükleniyor mu?
Hayır. Mojibuster metni tarayıcınızda düzeltir. Metin ne aktarılır ne de saklanır.