2012-08-01 8 views
13

Me enfrento con el problema de codificación UTF-8 mientras persistí mis objetos de modelo. En turco '' 'es una letra. También hay algunos otros caracteres turcos que están incluidos en la codificación UTF-8. Mientras persista mis objetos de modelo, todos los caracteres '' 'se conservan como' ? 'a DB. Estoy usando MySQL 5.5 en Ubuntu Linux OS de 64 bits. También he configurado hibernate & propiedad de codificación de conexión c3p0 para UTF-8 también. Cuando depuro, los datos provienen del cliente son verdaderos.Hibernate codifica mal mientras persisten los objetos [UTF-8]

Aquí está mi configuración y estaré muy feliz si alguien puede ayudarme.

Gracias de antemano.


primavera & 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> 

Respuesta

31

Probar configuración codificación en la fuente de datos

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"> 
     <value>com.mysql.jdbc.Driver</value> 
    </property> 
    <property name="url"> 
     <value>jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=UTF-8</value> 
    </property> 
    <property name="username"> 
     <value>?</value> 
    </property> 
</bean> 

¿También está seguro de que la entrada de los formularios está codificada correctamente? ¿Usas filtro en tu aplicación de primavera? Ejecute la aplicación en modo de depuración y verifique los campos de su objeto modelo antes de continuar.

El filtro debe beplaced en su archivo web.xml:

<filter> 
    <filter-name>SetCharacterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncodingFilter</filter-name> 
    <url-pattern>*</url-pattern> 
</filter-mapping> 
+1

muchas gracias pawelccb, agregando codificación charachter a la url resuelto problema .. – talha06

+0

Después de probar todas las configuraciones de Hibernate y MySQL, ese enfoque de filtro funcionó. ¡Gracias! –

+2

Salvaste mi día ... funciona como un encanto ... – Babu

0

comprobar lo son los datos almacenados en el bean. ¿Cómo se llena tu bean ?, ¿es a través de la entrada del usuario? Si es así, tendrás que escribir la codificación en esa página como UTF-8 y cambiar tu solicitud y parámetro de respuesta a UTF-8

+0

Tengo un filtro para esto, desafortunadamente no resolvió este error ... – talha06

1

Si ha agregado el

characterEncoding = UTF-8

parámetro a la cadena de conexión? en consecuencia (después de que ya se hayan creado las tablas db y tablas), debe recrear su base de datos. En realidad, en mi caso recreé mi db con:

CREAR BASE DE DATOS dbname JUEGO DE CARACTERES utf8 COLLATE utf8_general_ci;

O

base de datos alter predeterminado MY_DATABASE charset utf8 Intercalar utf8_general_ci;

Tenga en cuenta que estaba usando cadenas cirílicas.

Cuestiones relacionadas