2010-04-18 4 views
1

내 jsf 페이지에 적절한 문자 세트를 설정하는 데 문제가 있습니다. latin2 (ISO-8859-2 charset) 및 latin2_croatian_ci 데이터 정렬을 사용하여 MySql db를 사용합니다. 하지만 관리되는 빈 프로퍼티의 값을 설정하는 데 문제가 있습니다. 내가 포함 머리에JSF ISO-8859-2 charset

<%@ page language="java" pageEncoding="ISO-8859-2" contentType="text/html; charset=ISO-8859-2" %> 

: 내 페이지의 상단에

Page 지시문은

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2"> 

그리고 내 양식 태그는 다음과 같습니다

<h:form id="entityDetails" acceptcharset="ISO-8859-2"> 
제작 한

및 doFilter 메서드 구현을 사용하여 web.xml에 등록 된 필터 :

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    request.setCharacterEncoding("ISO-8859-2"); 
    response.setCharacterEncoding("ISO-8859-2"); 
    chain.doFilter(request, response); 
} 

그러나 inputText를 통해 관리되는 bean 속성을 설정하면 모든 특수 (유니 코드) 문자가 '?'로 바뀝니다. 캐릭터.

저는 실제로 페이지를 잘 수행 할 수 있도록 charset을 설정하는 방법에 대한 아이디어가 없습니다. 어떤 제안?

미리 감사드립니다.

+1

* 어떻게 손상된 것으로 결론을 냈습니까? 보기에서 검토 했습니까? 아니면 stdout에서? (여기서 당신은'System.out.print' 문자를 쓰게됩니다). – BalusC

+0

응답이 늦어서 죄송합니다. db에 SQL 스크립트를 통해 데이터를 삽입했는데 올바르게 표시되었으므로 올바른 charset을 표시하는 것이 문제가되지 않습니다. JSF에서 전송 된 메소드 bean 데이터 세트에 (stdout 및 slf4j를 통해 파일에 기록 된) 데이터가 이미 손상되었으며 데이터가 손상되었습니다. 또한 데이터베이스에 삽입 된 데이터가 손상되었습니다. – Vladimir

답변

0

내가 한 기록은 오도 된 것입니다. stdout이 특수 문자를 '?'로 대체 한 것으로 나타났습니다. 캐릭터. 그러나 db에 작성된 문자도 '?'로 대체되었습니다. 기호. 문제의 다른 부분은 JConnector가 올바른 인코딩으로 설정되지 않았기 때문에 db 항목이 로그 된 속성과 매우 비슷하게 보입니다. 나는 이것이 두 가지 문제의 조합이라는 것을 깨닫지 못했습니다.