2010-04-24 5 views
1

안녕하세요 저는 Tomcat 6.0.20 및 JDK 1.6.0_19에서 실행되는 스프링 MVC 웹 응용 프로그램을 빌드하고 있습니다. HTML 양식을 통해 특수 문자를 보낼 때 일부 특수 문자가 물음표로 저장됩니까?특수 문자 부합하지 않음

예를 들어, 다음 기호는 올바르게 저장됩니다. 일부 기호는? like : ₤, ♪, ☺

MySQL 테이블 charset은 utf-8입니다.

here을 제안 내 JSP는 3 개 문자를 보낼 때 내가 POST 요청을 디버깅 할 때 ₤을 € UTF-8 내가있는 web.xml org.springframework.web.filter.CharacterEncodingFilter을 포함했다

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 

사용 방화 광구와 나는 다음을 얻는다 : % E2 % 82 % ACa ​​% E2 % 82 % A4는 E2 이후로 정확하다. 82 AC는 € 및 E2의 코드이다. 82 A4는 code에 대한 코드이지만 ₤는으로 저장된다? 데이터베이스에. ₤을 데이터베이스에 직접 저장하면 웹 페이지에 올바르게 표시됩니다.

어떻게 해결할 수 있습니까?

답변

2

문자 인코딩이 UTF-8로 기본 설정되어 있고 다른 설정이 제대로되어 있지 않은지 확인해야하는 몇 가지 영역이 있습니다 (예 : iso-8859-1). 확인 :

  • JDBC 드라이버
  • 자바 가상 머신 (라틴 기반 및 유니 코드 분석 할 수 - 유니 코드에 비 라틴 문자로 변환 할 수있는 native2ascii 실행할 수 있습니다)
  • 데이터베이스 인코딩
  • 톰캣/J 보스, 등 (서버)
  • 브라우저
  • 운영 체제

그것을 목에 통증이있어이 모든 것들을 점검해야하지만, 누군가 그것을해야만합니다. 나는 그것이 JVM 같은 소리 나 JDBC 드라이버는 UTF-에

+0

감사합니다. JDBC 구성 문제였습니다. 연결 URL에 thisUnicode = true & characterEncoding = UTF8을 추가하면 이제 작동합니다. – Enrique

2

먼저 인쇄 해당 문자 문제의 원인이 될 수있는 사람들이 나에게

에 동의하는 것을 일반적으로 UTF-8로 모든 것을 설정하는 것이 좋습니다 8 가능 표준 출력. 그들은 잘못 보면 HTTP 요청 인코딩을 설정해야합니다. 그들이 올바르게 보이면 문제는 실제로 데이터 액세스 계층에 있습니다. 독립적 인 DB 관리 도구를 사용하여 해당 문자를 수동으로 삽입하고 검토하십시오. 그들은 잘못 보았다면, 당신은 DB (및 테이블!) 인코딩을 설정해야합니다. 그들이 올바르게 보이면 문제는 JDBC 드라이버/연결 문자열에 있습니다. 또한 JDBC 드라이버 버전이 DB와 ​​일치하며 사용 가능한 최신 버전인지 확인하십시오.

this article에 대한 자세한 배경 정보, 실용적인 설명 및 자세한 해결책을 찾을 수 있습니다.