TXT dosyasında Türkçe harfler bozulunca: CP1254
Bir .txt açıyorsunuz ve Türkçe harfler yerine tuhaf işaretler duruyor. Dosya bozulmuş değil. Baytlar yerli yerinde, yalnızca yanlış tabloyla okunuyor.
Türkçede bu sorunun kendine özgü ve aslında işi kolaylaştıran bir tarafı var: genelde her şey bozulmaz.
Neden böyle olur
Düz metin dosyası hangi kodlamada olduğunu içinde belirtmez. Yalnızca bir bayt dizisidir; nasıl yorumlanacağına onu açan program karar verir.
Eski Türkçe dosyalar çoğunlukla CP1254, yani Windows-1254 kodlamasındadır. Onun standart karşılığı olan ISO-8859-9 de sık görülür; ikisi Türkçe harfler açısından aynı yerlere oturur.
Ayırt edici işaret: kısmi bozulma
Türkçenin yirmi dokuz harfinden yirmi üçü ASCII ile aynı yerdedir. Yalnızca altısı farklıdır: ı, ğ, ş, ç, ö, ü ve büyük halleri.
Bu yüzden CP1254 bir metin yanlış okunduğunda ortaya tamamen anlaşılmaz bir şey çıkmaz. Cümlelerin iskeleti okunur kalır, aralara tek tük bozuk işaretler serpilir.
“Türkçe karakterler” gibi bir ifade “Türkçe karakterler” olur; gövde ayakta durur, yalnızca altı harf düşer. Bu görüntüyü gördüğünüzde tanı neredeyse kesindir.
Bunun pratik bir sonucu var: metin kısmen okunabildiği için insanlar sorunu yıllarca öylece bırakabiliyor. Oysa düzeltmesi birkaç saniyelik iş.
| Kodlama | Nereden gelir |
|---|---|
| UTF-8 | bugünün standardı |
| CP1254 | Windows’ta kaydedilmiş Türkçe dosyalar |
| ISO-8859-9 | aynı harfler, standart karşılığı |
| UTF-16 | bazı Windows programlarının dışa aktarımı |
Uygulamanın şu anki davranışı
Açıkça söylemek daha iyi. Aurora Reader önce UTF-8 dener, başarısız olursa Latin-1’e döner. Ne CP1254’ü tanır ne de ayarlarda kodlama seçeneği vardır.
Latin-1, hata iletisi yerine neden bozuk harf gördüğünüzü de açıklar: o kodlamada her baytın bir karşılığı bulunduğu için yedek yol her zaman “başarılı” olur, sadece yanlış metni verir.
Bu davranış sorun olarak kaydedildi.
Nasıl düzeltilir
Bilgisayarda bir kopya üzerinde çevirin, sonra telefona geri alın.
iconv -f CP1254 -t UTF-8 kitap.txt > kitap-utf8.txt
Sonuç değişmezse -f ISO-8859-9 deneyin. Windows’ta Not Defteri ile açıp kodlamayı UTF-8 seçerek yeniden kaydetmek de olur; büyük dosyalarda yavaştır.
Her zaman kopya üzerinde çalışın: yanlış kodlamayla yapılan çevrim geri alınamaz.
Arşivden çıkan dosya adları bozuksa
Bazen tersi olur: metin düzgün, ama arşivden çıkan dosya adları bozuk.
Bu ayrı bir konudur. ZIP biçimi dosya adlarının kodlamasını uzun süre tanımlamadı; Windows arşivleyicileri adları CP1254 ile yazarken Android’deki açıcılar UTF-8 varsayar. İçerik zarar görmez.
Dosya azsa elle düzeltmek en hızlısı. Çoksa bilgisayarda kodlama seçilebilen bir arşivleyiciyle açıp sonra aktarın.
İçindekilerin boş olması kodlamayla ilgili değil
Ayrı bir durum: harfler doğru ama içindekiler boş.
Uygulama bölüm başlıklarını ararken Chapter 1 ve Part 2 gibi İngilizce kalıplara bakar; “1. Bölüm” ya da “Birinci Bölüm” bunlara uymaz. Aynı kod parçası kelimeleri boşluklardan sayar, bu yüzden sayfa tahmini de şaşar. İkisi de ayrıca kaydedildi: bölüm tanıma ve kelime sayımı.
Bu bir dosya bozulması değil
Bozuk dosya genelde hiç açılmaz ya da ortada kesilir. Kitap baştan sona düzenli biçimde yanlış harf gösteriyorsa baytlar sağlamdır. Ayrımı dosya bozuk mu yazısında bulabilirsiniz.
Uzantıyı değiştirmek işe yaramaz; uzantının içerikle ilgisi yoktur.
Harfler doğru ama görünümleri tuhafsa
O zaman sorun yazı tipindedir. Türkçenin noktasız ı ve noktalı İ harfleri her yazı tipinde bulunmaz; eksikse boş dikdörtgen çıkar.
1928 öncesi tıpkıbasımlarda ise durum büsbütün başkadır: metin Arap harfleriyledir ve Latin harfli bir yazı tipi onu zaten gösteremez. Çözüm kendi yazı tipinizi eklemektir.
Bir daha yaşamamak için
Aynı kitabın EPUB’ı varsa onu alın. EPUB kodlamayı dosyanın içinde bildirir, sorun hiç doğmaz. Vikikaynak’ın EPUB dışa aktarımı bu yüzden işe yarar.