JAVA üzerinden JDBC ile MySQL bağlantılarında Türkçe karakter sorunu

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.

jdbc-java-mysql-utf8 jdbc-java-mysql-utf8  

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&param2=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. 😃