← Tüm rehberler

Excel'de CSV dosyasındaki Türkçe karakterler neden bozuluyor?

· 2 dk okuma

Bir CSV dosyasını çift tıklayıp Excel'de açtığında "ö", "ü" gibi anlamsız harfler görüyorsan dosya bozuk değildir. Excel ile dosya farklı karakter kodlamaları kullanıyordur.

Sorunun sebebi: karakter kodlaması

Bilgisayar harfleri sayılarla saklar, hangi sayının hangi harf olduğunu ise karakter kodlaması belirler. Modern programların çoğu ve internet UTF-8 kullanır. Türkçe Windows'ta Excel ise bir CSV dosyasını çift tıkla açarken, dosyada özel bir işaret yoksa, sistemin eski kodlamasını (Windows-1254) bekler.

Dosya UTF-8 olduğu halde Excel onu Windows-1254 sanarsa, iki baytlık Türkçe harfler iki ayrı garip karaktere dönüşür. Örneğin ö harfi "ö", ü harfi "ü", ç harfi "ç", ı harfi "ı", İ harfi "İ" olarak görünür. Tersi de olur: eski bir Windows-1254 dosyasını UTF-8 bekleyen bir program açarsa harfler yerine soru işareti ya da siyah eşkenar dörtgen görürsün.

Çözüm 1: Excel'de dosyayı "Metin/CSV'den" aç

Dosyayı çift tıklamak yerine Excel'i aç, Veri sekmesinden "Metin/CSV'den" (From Text/CSV) seçeneğini kullan. Açılan pencerede "Dosya kaynağı" (File origin) olarak "65001: Unicode (UTF-8)" seç. Önizlemede harfler düzgün görünüyorsa Yükle'ye bas. Bu yöntem dosyayı değiştirmez, sadece doğru kodlamayla okutur.

Çözüm 2: Dosyaya BOM ekle

BOM (Byte Order Mark), dosyanın en başına konan üç baytlık görünmez bir işarettir. Excel bu işareti görünce dosyanın UTF-8 olduğunu anlar ve çift tıklayınca bile harfleri doğru gösterir.

Kendi yazdığın bir programla CSV üretiyorsan UTF-8 "BOM'lu" yazmanı öneririm. Python'da bunun karşılığı dosyayı encoding="utf-8-sig" ile açmaktır.

Çözüm 3: Kodlamayı bir araçla düzelt

Elinde hazır bozuk bir dosya varsa CSV Türkçe karakter aracı kodlamayı otomatik algılar, önizlemede harfleri gösterir ve "Excel için UTF-8 BOM ekle" seçeneğiyle düzeltilmiş bir dosya indirmeni sağlar. Dosya tarayıcında işlenir, bir yere yüklenmez.

Bir sorun daha: sütunlar tek kolonda toplanıyor

Türkçe Excel, CSV ayracı olarak noktalı virgül kullanır, çünkü bölgesel ayarlarda ondalık ayracı virgüldür. Virgülle ayrılmış bir CSV'yi açarsan tüm veri tek sütunda görünür. Çözüm, ayracı noktalı virgüle çevirmektir. Bunun için CSV ayraç aracı işini görür. Dosyayı başka bir programa göndereceksen tersini yapıp virgüle çevirebilirsin.

Kısa kural: Excel'de açacaksan UTF-8 + BOM + noktalı virgül. Başka bir sisteme yükleyeceksen genelde BOM'suz UTF-8 + virgül.

Diğer rehberler