Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

CSV'den DB'ye Veri Aktarırken Türkçe Karakterlerin '?' Olması ve Çözümü

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
51
🤬 Encoding Cehennemine Hoş Geldiniz!

Dün gece, müşteriden gelen devasa bir CSV dosyasını veritabanına aktarmak için sıradan bir Python botu yazıyordum. Her şey yolunda gidiyor gibiydi, ta ki verileri kontrol edene kadar. "İstanbul" yazan yer "?stanbul", "Şirket" yazan yer "?irket" olmuştu. Kafayı yiyecektim! Tüm Türkçe karakterler, o lanet olası soru işaretlerine dönüşmüştü.

🔍 Meğerse Sorun Neymiş?

Hemen pandas ile okuduğum dosyayı ve bağlantıyı didik didik etmeye başladım. İlk şüphelim, tabii ki UTF-8'di. Ama kodumda zaten `encoding='utf-8'` yazıyordu. StackOverflow'da bile benzer onlarca soru var ama bana özel çözüm yoktu. Sonra aklıma geldi, ya dosya Windows-1254 (cp1254) ile kaydedilmişse? Hemen denedim:

Python:
df = pd.read_csv('veriler.csv', encoding='cp1254')

Ve işte! Terminalde ilk defa düzgün "Çanakkale" yazısını görünce içimden bir "Evet be!" çığlığı attım. Meğerse müşteri Excel'de kaydedip gönderdiği için dosya cp1254 formatındaymış. Botum ise saf gibi utf-8 bekliyormuş.

💡 Alınacak Ders (The Takeaway)

Bu saçmalıktan sonra öğrendiğim şey şu: Türkçe karakter içeren herhangi bir dosya ile çalışırken, encoding parametresini asla varsayılan bırakma! Hatta dosyayı açmadan önce küçük bir fonksiyonla encoding tespiti yapmak çok daha sağlıklı. Ya da müşteriye "Ağabey, lütfen UTF-8 olarak kaydet :)" demeyi öğren.

Siz de benzer bir encoding faciası yaşadınız mı? Ya da CSV okurken encoding tespitini otomatik ve güvenli yapmanın daha temiz bir yolu var mı? Yorumlara yazın, birlikte ağlayalım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri