Eğer JAVA üzerinden MySQL JDBC sürücüsü ile veritabanına bağlanıyor ancak yaptığınız sorgularda Türkçe karakterler abuk subuk görünüyorsa (mesela ? çıkıyorsa) yapmanız gereken iki şey var:
Veritabanınızın karakter kodlamasını kontrol edin
Başka 10 milyon seçenekle de doğru ayarları yaptığınızda sorun yaşamayacak olsanız da, uluslararası desteğinden dolayı karakter kodlaması olarak UTF-8 seçmeniz önerilir. Veritabanınızda bu karakter kodlaması mı kullanılıyor, kontrol etmelisiniz.
Eğer başka bir kodlama kullanıyorsanız, dönüştürme yapabilirsiniz. Ancak bu başlı başına bir iştir ve çözümü için Google’da arama yapmanız gerekir. 🙂 Yeni bir veritabanı modellemeye başlayacaksanız önerim UTF-8 kullanmanızdır.
Bağlantıda kullanılacak kodlamayı ayarlayın
Verilerin tutulurkenki kodlanması bir şey, JAVA’ya aktarılırken kurulacak bağlantıda aktarılırken kullanılacak karakter kodlaması başka bir şey. Bu ikisinin birbirine uygun olması gerekiyor.
Bunu yapmak ise çok basit. JDBC ile bağlantı kurmak için kullandığınız connection string’e useUnicode=true&characterEncoding=utf8
eklemeniz yeterli olacaktır. Buradaki kullanılan söz dizimi standart URI söz dizimidir.
protokol://adres?param1=deger1¶m2=deger2
şeklinde bir yazıma sahiptir.
Örnek:
conString = "jdbc:mysql://umutserver/db1?useUnicode=true&characterEncoding=utf8";
PHP’de bu sorunları çözmek için kullandığım SQL sorgusu olan SET names UTF8 maalesef JAVA’da yemedi. =)
JAVA üzerinden JDBC ile MySQL bağlantılarında Türkçe karakter sorunu 3 yorum aldı.
Sırf merakımdan soruyorum Umut; neden utf_general değil de utf_turkish?
Bkz. https://ubenzer.com/mysql-collation-degisimi/
Aslında her şey normaldi, mysql bağlantısının altına şunu ekleyince düzeldi: mysql_query("SET NAMES 'utf8'");
Lorem Ipsum nedir?
Renk Körleri Web’i nasıl görüyor?
Seçim Adayımız: Medyum Ömer
Türkçede Dil Evrimi
Almanya’da nasıl ehliyet aldım?
Bir şirket neden uzaktan çalışmaya (remote working) izin verir?
-de -da eki ne zaman ayrı yazılır?
Almanya’ya gelmek için yapılan bürokratik işlemler