I'm facing with UTF-8 encoding problem while persisting my model objects. In Turkish 'ı' is a letter. Also there're some other Turkish characters that is included in UTF-8 encoding. While I persist my model objects, all 'ı' characters are persisted as '?' to DB. I'm using MySQL 5.5 on Ubuntu Linux 64-bit OS. Also I've already set hibernate & c3p0 connection encoding property to UTF-8 too. When I debug, the data comes from client is true.
Here's my config and I'll be so happy if someone can help me.
Thanks in advance.
Spring & Hibernate Config
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="packagesToScan" value="com.tk.dms.model" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
<!-- c3p0 properties -->
<prop key="hibernate.c3p0.min_size">2</prop>
<prop key="hibernate.c3p0.max_size">50</prop>
<prop key="hibernate.c3p0.maxPoolSize">50</prop>
<prop key="hibernate.c3p0.minPoolSize">2</prop>
<prop key="hibernate.c3p0.initialPoolSize">2</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
</props>
</property>
</bean>
If you have added the
parameter to the connection string consequently (after the db and tables have already been created), you need to recreate your database. Actually in my case i recreated my db with:
OR
Note that i was using cyrillic strings.
Try setting encoding in datasource
Also are you sure that the input from forms is properly encoded? Do you use filter in your spring application? Run application in debug mode and check fields of your model object before persisting.
The filter should beplaced in your web.xml file:
Check what is the data stored in your bean. How is your bean populated?, is it through user input?, if yes, then you will have to write encoding in that page as UTF-8 as well and change your request and response parameter to UTF-8