[SPRING] Hibernate는 객체를 영속화하는 동안 잘못 인코딩합니다 [UTF-8]
SPRINGHibernate는 객체를 영속화하는 동안 잘못 인코딩합니다 [UTF-8]
모델 객체를 유지하면서 UTF-8 인코딩 문제에 직면하고 있습니다. 터키어에서 'ı'는 편지입니다. 또한 UTF-8 인코딩에 포함 된 다른 터키 문자가 있습니다. 내 모델 객체를 유지하는 동안 모든 'ı'문자는 '?'로 유지됩니다. DB에. 우분투 리눅스 64 비트 OS에서 MySQL 5.5를 사용하고 있습니다. 또한 저는 이미 최대 절전 모드와 c3p0 연결 인코딩 속성을 UTF-8로 설정했습니다. 디버깅 할 때 클라이언트의 데이터가 사실입니다.
여기에 내 설정이있어 누군가가 나를 도울 수 있으면 너무 행복해.
미리 감사드립니다.
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>
해결법
-
==============================
1.데이터 소스에서 인코딩 설정 시도
데이터 소스에서 인코딩 설정 시도
<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>
양식의 입력이 적절하게 인코딩되었는지도 확실합니까? 스프링 응용 프로그램에서 필터를 사용합니까? 응용 프로그램을 디버그 모드로 실행하고 지속하기 전에 모델 개체의 필드를 확인하십시오.
필터는 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>
-
==============================
2.추가 한 경우
추가 한 경우
매개 변수를 연결 문자열 (결과적으로 db 및 테이블을 만든 후)에 추가하려면 데이터베이스를 다시 만들어야합니다. 사실 내 경우에는 함께 내 DB를 재현 :
또는
내가 키릴 문자 문자열을 사용하고 있었다는 것에 유의하십시오.
-
==============================
3.빈에 저장된 데이터가 무엇인지 확인하십시오. 빈이 어떻게 채워지 는가? 사용자 입력을 통한 것인가? 그렇다면, 그 페이지에서 UTF-8로 인코딩을 작성하고 요청 및 응답 매개 변수를 UTF-8로 변경해야한다.
빈에 저장된 데이터가 무엇인지 확인하십시오. 빈이 어떻게 채워지 는가? 사용자 입력을 통한 것인가? 그렇다면, 그 페이지에서 UTF-8로 인코딩을 작성하고 요청 및 응답 매개 변수를 UTF-8로 변경해야한다.
from https://stackoverflow.com/questions/11758094/hibernate-encodes-wrong-while-persisting-objects-utf-8 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 부트로 JAR 패키징으로 JSP를 제공 할 수 있습니까? (0) | 2019.01.20 |
---|---|
[SPRING] Spring MVC를 이용한 인코딩 문제 (0) | 2019.01.20 |
[SPRING] 누락 된 이슈 javax.transaction : jta : jar : 1.0.1B (해상도가 다를 수 있으므로 문제가 다름) (0) | 2019.01.20 |
[SPRING] 최대 절전 모드에서 날짜를 비교하는 방법 (0) | 2019.01.20 |
[SPRING] 선택적 스프링 빈 참조 (0) | 2019.01.20 |