MySql + JPA + JBoss + Eclipse Türkçe karakterter sorunu var mı yok mu?

28 June, 2009 (04:49) | Programming | By: selcuk

Default bir kurulumda evet sorunlar var. Fakat bir kaç düzenleme ile bertaraf edilebilir.

Hemen karşımıza çıkan sorun şu, JUnit testinde bir Entity nizin bazı fieldlarına Tükçe karakter içeren değerler atarsanız geçersiz karakterlerle ilgili exception almanız muhtemel.

Burada bir çok noktada veri encode edilip decode ediliyor. Herşeyden önce kodumuzu yazdığımız yer bir text editör ve onun bir encodingi var. Onu şimdiye kadar yapmadıysanız hemen UTF-8 yapmakla işe başlayabilirsiniz. Bunu workspace bazında UTF-8 yapmak için Window/Preferences/Workspace/Text file encoding kısmını kulanabilirsiniz. Proje bazlı yapmak isterseniz, Project/Properties/Resource/text file encoding seçeneğini kullanabilirsiniz.

Maven kullananlar için bunu pom.xml den yapmak da mümkün.

<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

JPA kısmında da bir düzenleme yapmak gerekiyor. persistence.xml de connection url imizde kullandığımız encodingin ne olduğunu bildirmeliyiz.

<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/uzman?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>

MySQL tarafında,MySQL’i kendi konfigurasyon toolu ile konfigure ederek, utf-8 ‘in default encoding olarak tercih ettiğimizi belirtmeliyiz.

Yalnız eğer veritabanızı daha önce açtıysanız, default ayarları değiştirmeniz problemimizi çözmeye yetmeyecektir. Var olan veritabanımızın da encodingini değiştirmemiz gerekir. Bunun için de

ALTER DATABASE mydatabase CHARACTER SET 'utf8' COLLATE  utf8_turkish_ci

komutunu MySQL Query browser da çalıştırmalısınız.

Kolay gelsin.

Write a comment