Veritabanı

MySQL, Hibernate, JPA, Seam, JDBC Türkçe Karakter Problemi ve Çözümü

Mysql-hires_tugrul_asikMerhabalar Arkadaşlar,

Türkçe karakter problemini veritabanı ve/veya ORM araçları kullanırken yaşamayan yoktur sanırım. Mutlaka karakter kodlaması veya bizlerin eklemeyi unuttuğu bazı parametre ve konfigürasyonlardan dolayı bu sorunla karşılaşıyoruz.

Çözümü genelde oldukça basit olsa da bazen gözümüzden kaçırdığımız noktalar olabiliyor. Bu kapsamda böyle bir sorunla karşılaştığınızda uygulayabileceğiniz bazı yöntemleri yazının devamında paylaşıyor olacağım.

  • JDBC

JDBC ayarlarında aşağıdaki parametreleri girmelisiniz.

useUnicode=true
characterEncoding=UTF-8
  •  JPA

persistence.xml içerisine property olarak aşağıdaki satırları eklemelisiniz.

<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />


  •  Hibernate config

Hibernate.cfg.xml içerisine aşağıdaki satırları eklemelisiniz.

<property name="hibernate.connection.characterEncoding">utf8</property>
  •  Seam

ds.xml içerisine aşağıdaki satırları girmelisiniz.

<connection-property name="useUnicode">true</connection-property>
<connection-property name="characterEncoding">UTF-8</connection-property>

 

importantTüm bunları yaptınız ve hala Türkçe karakter sorunu ile karşılaşıyorsunuz. Burada çoğu kişinin unuttuğu nokta Veritabanı  üzerinde şema oluştururken şemayı “default encoding” olarak açmasıdır. Default olarak Latin-xx encoding oluşturulur.  Şemayı oluştururken  UTF-8‘i destekler şekilde seçtiğimizde çok büyük bir ihtimal sorun çözülecektir.

İşinize yaraması dileğiyle, okuduğunuz için teşekkürler 😉