CSV Excel’de Neden Bozuluyor? Karakterler, Sütunlar ve Baştaki Sıfırlar
İçindekiler
- Doğrudan Teşhis: Dosya Biçimi ile Excel Yorumlama Ayrımı
- Karakter Bozulması (Mojibake): UTF-8 ve UTF-8 BOM Ayrımı
- Virgül ve Noktalı Virgül Bölge Çakışması (Tüm Veri A Sütununda)
- Tırnak İçi Ayırıcılar ve Satır Sonları (RFC 4180 Standard (Comma Delimited Format)ı)
- Baştaki Sıfırların Kaybolması ve 15 Basamak Sınırı
- Microsoft Excel Resmî İçe Aktarma Adımları (Bozulmayı Önleme)
- Güvenli CSV İşlemleri İçin GoToolstack İstemci Taraflı Araçları
- Teknik Referanslar ve Resmi Standartlar
1. Doğrudan Teşhis: Dosya Biçimi ile Excel Yorumlama Ayrımı
Bir CSV (Virgülle Ayrılmış Değerler) dosyası, biçimlendirilmemiş düz metin akışından başka bir şey değildir. Yalnızca ham karakterleri, alan ayırıcılarını ve satır sonlarını içerir. Bir CSV dosyası Microsoft Excel'de açıldığında karakterler bozuk çıktığında, tüm veriler A sütununa yığıldığında veya kimlik numaralarının sonu sıfırlandığında, genellikle dosyanın kendisi bozuk değildir. Asıl sorun, Excel'in çift tıklama ile açılırken uyguladığı otomatik tahmin kurallarıdır.
Bir .csv dosyasına çift tıklamak, Excel'i dosyanızın gerçek kodlamasını veya ayırıcısını sormadan işletim sisteminizin bölgesel Windows ayarlarına göre varsayım yapmaya zorlar. Bu sorunları kalıcı olarak çözmek için dört teknik hata noktasını ayırt etmelisiniz:
2. Karakter Bozulması (Mojibake): UTF-8 ve UTF-8 BOM Ayrımı
Modern web uygulamaları ve veritabanı dışa aktarımları, BOM (Byte Order Mark) içermeyen standart UTF-8 metin üretir. Ancak Windows üzerinde bir CSV dosyasına çift tıkladığınızda, masaüstü Excel varsayılan olarak yerel ANSI kod sayfasını (Türkçe Windows'ta Windows-1254, Batı Avrupa'da Windows-1252) kullanır.
Dosyanın en başında açık bir Byte Order Mark (BOM: 0xEF, 0xBB, 0xBF 3 baytlık belirteç) bulunmadığında, Excel iki veya üç baytlık UTF-8 karakterlerini ayrı tek baytlık ANSI simgeleri olarak okur. Bu durum klasik karakter bozulmasına yol açar:
| Hedeflenen Özgün Metin | Excel'de Görünen Bozuk Metin (BOM Yok) | Kök Neden Mekanizması |
|---|---|---|
München / İstanbul |
München / İstanbul |
UTF-8 2-byte → ANSI Mojibake |
Français / Español |
Français / Español |
Diacritics parsed as individual code points |
€ 1,500 / ₺ 5,000 / ¥ 10,000 |
€ 1,500 / ₺ 5,000 / ¥ 10,000 |
Multi-byte currency symbols decoded into ANSI artifacts |
Excel kullanıcıları için CSV hazırlarken dosyaya UTF-8 BOM ekleyin. Sitemizdeki GoToolstack JSON ↔ CSV Dönüştürücü aracında dosyanızı kaydetmeden önce Excel için UTF-8 BOM (\uFEFF) Ekle onay kutusunu işaretlemeniz yeterlidir.
3. Virgül ve Noktalı Virgül Bölge Çakışması (Tüm Veri A Sütununda)
ABD ve İngiltere'de ondalık ayırıcı olarak nokta (12.50), liste ayırıcı olarak virgül kullanılır. Ancak Türkiye ve Kıta Avrupası genelinde resmi ondalık ayırıcı virgüldür (12,50).
Bir virgül aynı anda hem ondalık basamak hem de sütun ayırıcı olamayacağından, Türkçe Windows sistemlerinde kayıt defterindeki ListSeparator değeri varsayılan olarak noktalı virgül (;) tanımlıdır. Standart virgülle ayrılmış bir CSV dosyasını Türkçe Excel'de çift tıklayarak açtığınızda Excel hiç noktalı virgül bulamadığı için tüm satırı tek hücre sayar ve bütün veriyi A Sütununa yığar.
Ya dışa aktaran araçtan noktalı virgül ile çıktı alın ya da Excel içinde Veri > Metinden/CSV'den sihirbazını kullanarak ayırıcıyı elle 'Virgül' seçin.
4. Tırnak İçi Ayırıcılar ve Satır Sonları (RFC 4180 Standard (Comma Delimited Format)ı)
Bir hücre değeri virgül, noktalı virgül veya adres gibi çok satırlı bir metin içerdiğinde, RFC 4180 standardına göre çift tırnak içine alınmalıdır. Hücre içi tırnaklar ise yan yana iki tırnak ("") yazılarak kaçırılmalıdır.
ID,Customer,Address,Notes
101,"Acme, Inc.","123 Industrial Way
Suite 400","Order confirmed with ""Express"" shipping"5. Baştaki Sıfırların Kaybolması ve 15 Basamak Sınırı
Excel biçimlendirilmemiş bir CSV hücresi okurken veri türünü tahmin etmeye çalışır. Bir hücredeki tüm karakterler rakamlardan oluşuyorsa, Excel bu alanı otomatik olarak sayıya dönüştürür. Bu durum iki geri döndürülemez veri kaybı yaratır:
Baştaki Sıfırların Silinmesi: Posta kodları, vergi numaraları ve telefon numaraları (örneğin "01234" veya "05321234567") sayıya çevrilerek 1234 veya 5321234567 yapılır. Baştaki sıfırlar bellekten tamamen silinir.
15 Basamak Hassasiyet Sınırı (Excel Motoru ve IEEE 754): Microsoft Excel'in tablo motoru kuralları gereği sayısal hassasiyet en fazla 15 anlamlı basamakla sınırlandırılmıştır. Genel IEEE 754 standardı çift duyarlıklı sayılarda 253'e kadar (9.007.199.254.740.992, yani 16 basamak) tam sayıları yuvarlama olmadan tutabilir; ancak Excel kendi dahili uygulama kuralı gereği 15. basamaktan sonraki tüm rakamları kalıcı olarak 0 yapar (1234567890123456 → 1234567890123450)!
HAYATİ UYARI: Dosyayı açtıktan sonra hücreyi 'Metin' olarak biçimlendirerek kaybolan basamakların geri getirilebileceğini iddia edenlere inanmayın. Excel sayıyı bir kez 15 basamaklı float olarak belleğe aldığında, 16. ve sonraki basamakların gerçek değeri kalıcı olarak yok olmuştur. Dosyayı kaydettiğinizde özgün verinin üzerine sıfırlar yazılır.
6. Microsoft Excel Resmî İçe Aktarma Adımları (Bozulmayı Önleme)
Herhangi bir CSV dosyasını karakter bozulması, sütun kayması veya rakam kaybı yaşamadan açmak için modern Excel'de (Office 2016, 2019, 2021 ve Microsoft 365) resmî Power Query adımlarını uygulayın:
- Excel'i boş bir çalışma kitabı ile açın (CSV dosyasına çift tıklamayın).
- Üst menüden Veri > Verileri Al > Dosyadan > Metinden/CSV'den seçeneğine tıklayın.
- Açılan önizleme penceresinde Dosya Kaynağı ayarını
65001: Unicode (UTF-8)olarak seçin. - Sınırlayıcı kısmını dosyanızın gerçek yapısına göre Virgül veya Noktalı Virgül yapın.
- Doğrudan Yükle yerine Verileri Dönüştür butonuna tıklayın. Uygulanan Adımlar bölmesinde otomatik eklenen "Değiştirilen Tür" adımını doğrudan değiştirin veya kaldırıp sütunları Metin yapın. Sayıya dönüştürme adımı bir kez çalıştıktan sonra sonradan Metin adımı eklemek kaybolan sıfır veya basamakları GERİ GETİRMEZ! Microsoft 365'te Dosya > Seçenekler > Veri > Otomatik Veri Dönüşümü ayarlarını da denetleyin.
- Kapat ve Yükle butonuna tıklayarak verilerinizi sıfır veri kaybıyla tablonuza aktarın.
- Ham orijinal CSV dosyasının üzerine yazıp yapısını bozmamak için çalışma kitabını Excel Çalışma Kitabı (
.xlsx) biçiminde kaydedin; böylece orijinal verinizi güvenle korumuş olursunuz.
7. Güvenli CSV İşlemleri İçin GoToolstack İstemci Taraflı Araçları
Verilerinizi sunucuya göndermeden, doğrudan tarayıcınızda dönüştürmek ve hazırlamak için doğrulanmış araçlarımızı kullanabilirsiniz:
- JSON ↔ CSV Dönüştürücü: Virgül, noktalı virgül, CRLF/LF ve UTF-8 BOM ekleme seçenekleri.
- Excel ↔ CSV/JSON Dönüştürücü: Tarayıcıda SheetJS motoru ile sunucusuz güvenli dönüşüm.
- Geliştirici Araçları Merkezi: Tüm istemci taraflı veri formatlama ve doğrulama araçları.
Teknik Referanslar ve Resmi Standartlar
- IETF RFC 4180: Virgülle Ayrılmış Değerler (CSV) Dosyaları İçin Ortak Format ve MIME Türü (Tırnak, CRLF ve Ayırıcı kuralları).
- Microsoft Learn / Support: Microsoft Excel'de metin (.txt veya .csv) dosyalarını içe veya dışa aktarma (Power Query veri türü koruma adımları).
- Unicode Consortium: SSS – UTF-8, UTF-16, UTF-32 ve Byte Order Mark (BOM) teknik yönergeleri.