€ŠšŽžŒœŸ
과 같은 특수 문자가 포함 된 필드가 포함 된 양식을 제출하려고합니다. 지금까지 내가 ISO-8859-15 wikipedia page에서 볼 수있는 한, 이러한 문자는 표준에 포함되어 있습니다. 요청과 응답 모두에 대한 인코딩이 ISO-8859-15로 설정되어 있지만 JAVA EE 환경에서 FreeMarker 2.3.18을 사용하여 값을 표시하려고 할 때 값은 ???????
입니다. 양식의 허용 된 문자 집합을 ISO-8859-15
으로 설정했는데 양식이 콘텐츠 유형 text/html;charset=ISO-8859-15
(방화 광부 사용)과 함께 제출되었음을 확인했지만 올바른 문자를 표시하는 방법을 알 수 없습니다. 다음 코드를 실행하면 올바른 16 진수 값이 (ex: Ÿ = be)
으로 표시됩니다.FreeMarker 특수 문자가 물음표로 표시됩니다.
무엇이 누락 되었습니까? 미리 감사드립니다.
System.out.println(Integer.toHexString(myString.charAt(i)));
편집 :
내가 요청 처리로 나는 다음과 같은 코드를 데 :
PrintStream ps = new PrintStream(System.out, true, "ISO-8859-15");
String firstName = request.getParameter("firstName");
// check for null before
for (int i = 0; i < firstName.length(); i++) {
ps.println(firstName.charAt(i)); // prints "?"
}
BufferedWriter file=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "ISO-8859-15"));
file.write(firstName); // writes "?" to file (checked with notepad++, correct encoding set)
file.close();
freemarker/spring/tomcat 환경이 있습니다. 광산은 물음표를 표시하고 네트워크를 통해 물음표로 보내지 만, FM은 먼저 StringWriter로 출력하도록 설정되어 있습니다.이 시점에서 원래 문자는 여전히 Ÿ로되어 있기 때문에 FM 이후 문제가 발생합니다 출력을 처리했습니다. – Goose