2012-05-21 3 views
0

나는 Hibernate, JPA, Spring으로 구성된 응용 프로그램을 작성 중입니다.Freemarker - 파운드 기호가 잘못 표시되었습니다.

Freemarker를 사용하여 프로세스가 끝날 때 이메일을 보내는 프로세스가 있습니다.

무료 마커 템플리트의 데이터가 데이터베이스에서 채워집니다. 데이터는 데이터베이스에 £ 파운드 기호를 가지고 있지만 freemarker가 그것을 처리 할 때, 그것은으로 convereted 무엇입니까? 상징.

코드 데이터베이스에서 검색 한 데이터를 인쇄

final StringWriter writer = new StringWriter(); 
Template template= freemarkerConfiguration.getTemplate("sampleReport.ftl"); 
template.process(this, writer); 
System.out.println(writer.toString()); 

다음과 같이하고, 결과는

INFO 05-22 10:08:18 Printing ?-- Hex :a3 

A3 다음과 같다 -인가 파운드 기호하지만 인쇄를 위해 16 진수 코드는? 게다가.

나는

+0

터미널의 인코딩은 무엇입니까? 기본 시스템 인코딩은 무엇입니까? 기타 –

+0

Linux 시스템 인코딩 = en_GB.UTF-8 – Rishi

+0

템플릿의 출력 인코딩 설정을 시도했지만 작동하지 않습니다. – Rishi

답변

0

프리 마커는 모든 곳에서 유니 코드와 함께 작동 오류를 발견 할 수 없기 때문에 그 자체 -s ?를 생성하지 않습니다. String 대신 문자 String의 문자 코드를 인쇄하고 이미 0x3F (UCS 코드 ?)가 포함되어 있는지 확인하십시오. 그렇지 않은 경우 잘못된 인코딩을 사용하는 System.out.println이고 보내는 전자 메일을 인코딩하는 것은 마찬가지입니다. 0x3F가 포함되어 있다면 아마도 뭔가가 JDBC로 엉망이 될 것입니다 (다시 말하면, 문자 코드를 인쇄하여 JDBC에서 오는 문자열을 확인할 수 있습니다). 따라서 FreeMarker는 이미 ?을받습니다.

관련 문제