2010-07-12 6 views
0

스프링 3 MVC와 MySQL 5를 내 DB로 사용하고 있습니다.봄 3 MVC : 양식에서 € 기호를 저장하는 방법?

데이터베이스의 객체를 업데이트하기 위해 Spring 양식 태그를 사용하여 양식을 만들었습니다.

이 양식의 텍스트 입력 필드 중 하나에 "티켓 가격 : 35 유로"를 입력하고 항목을 저장합니다. 그런 다음 표시 페이지에서 항목을 보면 텍스트가 "Ticket price :? 35"로 표시됩니다.

MySql Query Browser를 사용하여 "Ticket price : € 35"를 데이터베이스에 직접 입력하면 유로화 기호가 표시 페이지를 통해 잘 표시됩니다.

스프링 폼이 유로화를 데이터베이스에 올바르게 저장하려면 어떻게해야합니까?


업데이트 :

<filter> 
    <filter-name>characterEncodingFilter</filter-name> 
    <filter-class> 
     org.springframework.web.filter.CharacterEncodingFilter 
    </filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 


<filter-mapping> 
    <filter-name>characterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 




<servlet> 
    <servlet-name>baseApp</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>baseApp</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

더 이상의 생각 :

안녕, 내 web.xml 파일은 다음과 같습니다 .. 행운과 함께, 귀하의 제안, Bozho를 시도?

답변

2

봄 문자 인코딩 필터를 사용하십시오. web.xml

<filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class> 
     org.springframework.web.filter.CharacterEncodingFilter 
    </filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

다음 기본 서블릿

에 매핑, 귀하의 MySQL의 연결 문자열은 다음과 같아야합니다

jdbc:mysql://localhost/dbName?characterEncoding=utf8 
+0

안녕하세요, 답변 주셔서 감사합니다. 이 필터를 추가하려고 시도했지만 불행히도 여전히 동일한 문제가 발생했습니다. 유로화 기호가 물음표로 나타납니다. 더 이상의 생각? –

+0

여전히 동일한 문제가 발생하면 JDBC/DB는 char을 UTF-8로 유지하지 못합니다. 연결 문자열에'useUnicode = yes'를 추가하십시오. MySQL은 이것에 관해서 약간 이상하게 여깁니다. – BalusC

+0

위와 같이 web.xml의 이전 변경 사항뿐 아니라 데이터 소스 URL도 변경되었습니다. 이제는 예외가있는 양식을 저장할 때 오류 org.hibernate.util.JDBCExceptionReporter - 데이터 잘림 : 행 1의 열 '설명'에 대해 잘린 데이터 . '설명'은 내가 입력하는 필드이며 MySQL 데이터 유형은 TEXT입니다. 이 예외가 발생하는 이유에 대한 의견이 있으십니까? –

0

€가 들어있는 문자열의 인코딩이 올바른 인코딩 (테이블과 동일)으로 설정되어 있는지 확인해야합니다. 내가 UTF - 8을 사용하는 것이 좋습니다

+0

-1. Java에서 모든'String '의 내부 표현은 UTF-16입니다. 필요한 것은 페이지 인코딩에서 UTF-16 ('CharacterEncodingFilter'에 의해 수행)과 UTF-16에서 데이터베이스 인코딩 (JDBC 드라이버에 의해 수행)에 이르는 올바른 변환 체인입니다. – axtavt

+0

먼저 문자열의 인코딩을 UTF-16으로 설정 한 다음 JDBC로 데이터베이스 인코딩으로 변환하는지 또는 웹 페이지에서 UTF-8로 변환하고 JDBC를 사용해야하는지 여부는 중요하지 않습니다. 더 이상의 변환이나 뭔가를 놓칠 수 있습니까? – Erik

+0

예. @ axtavt의 대답을 다시 읽어보십시오. 모든 Java 문자열은 UTF-16입니다. 기간. –