2011-08-16 5 views
1

j2ee 프로젝트를 진행 중입니다. 그것은 영어와 러시아어 모두의 폭을 작업하기로되어 있습니다. 그래서 매핑이있는 EncodingFilter이 '/ *'와마다 한 가지 수행 request.setCharacterEncoding("UTF-8");인코딩 문제 해결

나는 또한 테이블과 데이터베이스의 캐릭터 세트는 utf8_general_ciutf-8 및 데이터 정렬로 설정, MySQL은 5.5가 설치되어 있어야합니다.

내 로컬 컴퓨터에서 모든 것이 잘 작동하며, 러시아어 lang은 올바르게 db에 저장됩니다.

그런 다음 jelastic.com에서 앱을 테스트 해 보았습니다. 또한 MySQL을 선택하고 덤프를 가져오고 utf-8으로 charset을 설정하고 utf8_general_ci으로 데이터 정렬을 설정했습니다. 내가 db에 러시아 단어를 추가 할 때 '?????'만 볼 수 있습니다. 그러나 덤프와 함께 제공된 연장자 기록은 괜찮습니다! 나는 무엇이 잘못되었는지 전혀 알 수 없다.

+0

정확하게 "?????"가 보입니까? 일부 DB 관리 도구에 의한 DB에서? 아니면 HTTP 응답? – BalusC

+0

phpMyAdmin을 사용하고 있습니다. 그러나 '??????' 새 레코드 만 표시하고, 덤프에서 온 노인은 괜찮습니다. 그래서 phpMyAdmin 내 상황에 영향을 미치지 않는 것 같아요. – Dmitry

+0

그것은 단지 하나의 질문을 배제하는 것이 었습니다 :) 나는 대답을 올렸습니다. – BalusC

답변

1

플랫폼 기본 설정 대신 클라이언트 측 인코딩으로 UTF-8을 사용하도록 MySQL JDBC 드라이버에 지시해야합니다. 플랫폼의 디폴트 캐릭터 세트가 UTF-8가 아닌 경우, JDBC 드라이버가 사용하고있는 플랫폼의 디폴트 캐릭터 세트로 캐릭터가 포함되어 있지 않은 경우는 데이터베이스에 ?가 저장됩니다.

useUnicode=yescharacterEncoding=UTF-8 매개 변수를 JDBC URL에 추가하면됩니다. 예 : 이미 환경의 플랫폼의 디폴트 캐릭터 세트는 UTF-8로 구성한 있기 때문에 해당 지역의 자바 개발 환경에서 작동

 
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8 

가능성이있다.

+1

고마워요! 아시다시피, 내면화는 진짜 고통 일 수 있습니다.) – Dmitry

+0

미국인이 더 많은 국가를 신경 쓰지 않기 때문입니다.) – smas