2010-07-07 3 views
1

JavaScript를 사용하여 중국어 값을 렌더링하는 EL 표현식을 사용하고 있습니다.JSF EL 표현식은 JavaScript 내의 한자에 물음표 (?)를 표시합니다.

alert('#{bundle.chinese}'); 

그러나 실제 문자 대신 물음표 (?)가 사용됩니다.

같은 XHTML 페이지의 스크립트 태그 외부에서 사용할 때.

<p>#{bundle.chinese}</p> 

올바른 중국어 문자를 렌더링합니다. 소스보기에는 html UTF로 인코딩 된 값 &....;이 표시됩니다.

Facelets에서 JSF를 사용하고 있습니다.

+0

"물음표 렌더링"을 좀 더 명확하게 설명해 주실 수 있습니까? HTML 페이지를 오른쪽 클릭하여 생성 된 소스를 볼 때'alert ('&1234; &1234; &1234;') '대신'alert ('??? '); – BalusC

+0

예보기 소스에서 중국어 charecters에 대한 경고 ('???')를 보여줍니다. 영국인 charecters 들어 그 작동 괜찮아요 – ali

+0

그건 이상한데 ... Btw, charActers, charEcters 아니에요;) – BalusC

답변

2

죄송합니다. Tomcat 6.0.20의 Mojarra 2.0.2에서는이를 재현 할 수 없습니다.

<!DOCTYPE html> 
<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <f:loadBundle basename="com.example.i18n.text" var="bundle" /> 
    <h:head> 
     <title>test</title> 
     <script>alert('#{bundle.chinese}');</script> 
    </h:head> 
    <h:body> 
     <p>#{bundle.chinese}</p> 
    </h:body> 
</html> 

을 그리고 여기 com/example/i18n/text.properties의 내용입니다 : 여기에 사용되는 JSF 페이지입니다.

chinese=\u6C49\u8BED\uFF0F\u6F22\u8A9E\u002C\u0020\u534E\u8BED\uFF0F\u83EF\u8A9E\u0020\u006F\u0072\u0020\u4E2D\u6587 

생성 된 HTML 소스는 다음과 같습니다

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"><head> 
    <title>test</title> 
    <script>alert('汉语/漢語, 华语/華語 or 中文');</script></head><body> 
    <p>汉语/漢語, 华语/華語 or 中文</p></body> 
</html> 

아마 당신은 약간 다르게 몇 가지 물건을하고 및/또는 다른 JSF의 IMPL/버전을 사용하고 있습니다. UTF-8이 아닌 문자 인코딩을 하드 코딩하거나 사용하고 있지 않습니까? IDE 설정도 살펴보십시오.

+0

위의 입력 주셔서 감사. 위의 결과가 내가 찾고있는 결과입니다. 그러나 몇 가지 차이점이 있습니다. jsf 렌더러에서 얻는 문자 (데이터베이스)는 스크립트 태그 내부를 제외한 모든 곳에서 올바르게 렌더링되는 html로 인코딩 된 UTF (&#...;)입니다. 나는 utf-8에 charset을 설정 한 xml 태그와 메타 태그를 포함 시켰지만 아무 것도 작동하지 않습니다. 변경할 필요가있는 서버 수준 구성이 있습니까? 아니면 페이지 수준 태그를 추가해야합니까 ?? ps : - 내 응용 프로그램이 배포 된 곳입니다. 6.1 – ali

+0

위의 테스트에서 데이터를 인코딩 한 후 (&#...; 양식) 데이터를 렌더링 한 다음 확인합니다. – ali

+1

텍스트가 XML 엔터티 (예 : 'Ӓ')로 데이터베이스에 저장되어 있다고 하시겠습니까? 왜? 기술 사양을 더 명확히하여 재현을 시도 할 수 있도록하십시오. 지금까지 증상을 설명하는 것만으로도 작업 할 수있는 것을 제공하지 않습니다. 얼마나 정확하게 * 저장된 문자입니까? 정확히 어떻게 * 그들을 검색하고 있습니까? * 정확하게 * 어떻게 표시하고 있습니까? 위의 답에서했던 것처럼 완전한 예제를 포함하도록 질문을 업데이트하십시오. – BalusC