Durum 1: aslında sağlam bir dosyada �
Bir editör, oynatıcı ya da tarayıcı G�ne�li veya ya�mur gösteriyorsa dosya büyük olasılıkla Windows-1254 (Türkçe ANSI) ile kaydedilmiş ve UTF-8 olarak okunmuştur. Türkçe harfin baytı UTF-8’de geçersizdir, bu yüzden program onu gösterirken yerine koyma karakteri � ile değiştirir. Dosyanın kendisinde ise doğru bayt hâlâ durur.
Çözüm: Özgün dosyayı yukarıdaki kutuya bırakın. Mojibuster okurken kodlamayı tanır ve dosyayı UTF-8’e dönüştürür; sonuçta “Windows-1254 (ANSI) olarak okundu” yazar. Önemli: dosyanın kendisini kullanın, metni programdan kopyalamayın – kopyalarken � kalıcı hâle gelir.
Durum 2: � ya da ? metnin içine kaydedilmiş
Bir program metni yerine koyma karakteriyle kaydettiyse ya da başka bir yere aktardıysa özgün harf kaybolmuştur. Aynı şey ? için de geçerlidir: programlar hedef kodlamada bulunmayan bir karakterin yerine ? koyar. Türkçede bu çok tipiktir: ü, ö ve ç Batı Avrupa kodlamalarında vardır, ama ş, ı ve ğ yoktur. Sonuç Ay?e, ?i?li ya da Da??l?m olur, Gül ise sağlam kalır.
Buradan geriye hiçbir şey hesaplanamaz, çünkü farklı harflerin hepsi aynı işarete dönüşmüştür. Mojibuster tahminde bulunmak yerine kaç yerin etkilendiğini söyler. Yardımcı olabilecek tek şey kaynaktır: dışa aktarımı tekrarlayın ya da bir yedek kullanın.
Soru işaretlerinin tipik nedenleri
- Veritabanı: sütun ya da bağlantı
latin1veyaasciikullanır, veriler ise UTF-8 gelir. MySQL bilinmeyen karakterleri?ile değiştirir –şveıdahil. Her şeyiutf8mb4olarak ayarlayın. - PowerShell 5.1:
Export-Csvvarsayılan olarak ASCII yazar ve Türkçe harfleri?yapar.-Encoding UTF8parametresini ekleyin. - Python:
encode('ascii', errors='replace')karakterleri uyarı vermeden?ile değiştirir. - Komut istemi: Windows konsolu, kod sayfasında olmayan karakterleri
?olarak gösterir. Genellikle yalnızca görüntü yanlıştır, dosya değil.
Hangi durumda olduğunuzu nasıl anlarsınız?
- Dosyayı kodlamayı gösteren bir editörde açın, örneğin Notepad++ ya da Not Defteri. Durum çubuğunda “ANSI” ya da “Windows-1254” yazıyorsa durum 1’dir.
- Dosyayı Mojibuster’a bırakın. Sonuçta “Windows-1254 (ANSI) olarak okundu” yazıyor ve harfler geri gelmişse durum 1’dir.
- Mojibuster kaybolan karakterler bildiriyorsa durum 2’dir. O zaman yalnızca yeni bir dışa aktarım işe yarar.
Soru işareti yerine ÅŸ ya da ü gibi diziler görüyorsanız bu başka bir hatadır – ve neredeyse her zaman düzeltilebilir: ü, ÅŸ, ı yerine Türkçe karakter. Bozuk kesme işaretleri için: kesme işareti ve tırnaklar.
Sık sorulan sorular
Mojibuster ? işaretini yeniden harfe çevirebilir mi?
Hayır. Bir ? her harfin yerinde olabilir; Ay?e içindeki işaretin ş olduğunu biz tahmin edebiliriz, ama bilgi dosyada yoktur. Mojibuster bu yerlere dokunmaz, yalnızca kaç tane olduğunu söyler.
Neden bir programda � görüyorum da diğerinde görmüyorum?
O zaman dosya sağlamdır ve programlardan yalnızca biri onu yanlış kodlamayla okuyor. Mojibuster ile UTF-8’e dönüştürün, ikisi de doğru gösterir. Excel’deki CSV dosyaları için: Excel’de Türkçe karakter sorunu.
� karakteri nedir?
U+FFFD yerine koyma karakteridir. Programlar bir baytı karakter olarak okuyamadığında onu ekler. Bir kodlama hatasına işaret eder ve asıl metnin parçası değildir.