CSV’de Türkçe karakterler bozuk mu görünüyor? Nedeni ve çözümü
Bir müşteri listesini dışa aktarıp başka bir yerde açarsınız ve Şahin, Çağlar gibi isimler anlamsız simgeler ya da soru işaretleriyle görünür. Veriler bozulmamıştır. Program, baytları yazıldıkları karakter kodlamasından farklı bir kodlamayla okumuştur.
Güncellendi:
Nedeni: aynı harfler için farklı kodlamalar
Bir CSV dosyası, karakterlerinin nasıl kodlandığına dair hiçbir not içermeyen düz metindir. Bugün çoğu program UTF-8 yazar; bu kodlamada ş, ğ veya ı gibi harfler iki bayt kaplar. Eski Windows programları ve Türkçe sistemlerdeki birçok Excel sürümü ise aynı harflerin tek bayt kapladığı Windows-1254 kodlamasını kullanır.
UTF-8 tek baytlık bir kodlama gibi okunduğunda her özel harf iki tuhaf simgeye dönüşür. Tek baytlık metin UTF-8 gibi okunduğunda ise o tek bayt geçersizdir ve genellikle soru işareti ya da yedek simge olarak görünür.
Tipik durumlar
Bir çevrimiçi mağaza, CRM veya web formu UTF-8 dışa aktarır ve dosya çift tıklamayla Excel’de bozuk harflerle açılır. Bunun nedeni, birçok Excel sürümünün UTF-8’i ancak dosya bayt sırası işareti denen görünmez bir işaretle başlıyorsa tanımasıdır.
Tersi de olur: Excel’den klasik CSV olarak kaydedilmiş bir liste bir bülten aracına veya bir betiğe aktarılır ve UTF-8 bekleyen bu program soru işaretleri gösterir.
İlgili bir sorun da ayırıcıdır. Türkiye gibi ondalık ayırıcı olarak virgül kullanılan ülkelerde Excel sütunlar arasında noktalı virgül bekler; virgülle ayrılmış bir dosya bu yüzden tümüyle tek bir sütuna düşebilir.
UTF-8 dosyayı Excel’de doğru açmak
Çift tıklamak yerine dosyayı içe aktarın. Böylece Excel kodlamayı ve ayırıcıyı tahmin etmek yerine size sorar.
- Excel’de boş bir çalışma kitabı açın.
- Veri’yi, ardından Metinden/CSV’den seçeneğini seçin ve dosyayı belirtin.
- Dosya Kaynağı’nı 65001: Unicode (UTF-8) olarak ayarlayın ve önizlemeyi kontrol edin.
- Sütunlar henüz ayrılmamışsa doğru sınırlayıcıyı seçin ve verileri yükleyin.
- Kaydederken CSV UTF-8 biçimini kullanın ki sonraki program dosyayı doğru okusun.
CSV dosyasını UTF-8’e dönüştürmek
Veri dönüştürücü önce UTF-8 dener, baytlar geçerli UTF-8 değilse Windows-1252’ye geçer. Bu kodlama Batı Avrupa dilleri için uygundur ama ş, ğ ve ı harflerini doğru vermez; bu yüzden Windows-1254 ile kaydedilmiş Türkçe dosyalarda en güvenli yol, dosyayı önce Excel’de doğru kodlamayla içe aktarıp CSV UTF-8 olarak kaydetmektir. Doğru UTF-8 dosyaları dönüştürücü JSON ve diğer biçimlere çevirir; noktalı virgülü, virgülü ve sekmeyi ayırıcı olarak kendisi tanır.
Aynı dosyayı yanlış yönde birkaç kez dönüştürmek metni kalıcı olarak bozabilir; örneğin bozuk simgeler yeniden UTF-8 olarak kaydedildiğinde. Her zaman özgün dışa aktarımdan başlayın.
Hiçbir şeyin değişmediğini kontrol edin
Bir dönüştürmeden sonra yalnızca kodlamanın değiştiğini, içeriğin değişmediğini doğrulamak faydalıdır. İki CSV dosyasını müşteri numarası gibi bir anahtar sütun üzerinden karşılaştırın: Araç değişen hücreleri, yeni satırları ve eksik satırları listeler, böylece hatalı bir içe aktarım liste kullanılmadan önce fark edilir.
