2009-04-03 1 views
2

Tomcat 6/Linux의 서블릿에서 UTF-8을 읽고 쓰는 데 문제가있었습니다. 요청 및 응답은 utf-8이었고 브라우저는 utf-8이었고 URIEncoding은 커넥터 및 호스트의 server.xml에 설정되었습니다. 짧게, 코드 자체에서 저에게 알려진 모든 것이 있고, 서버 구성은 utf-8이었습니다.Tomcat/Linux의 UTF-8 및 서블릿

요청을 읽을 때 String에서 바이트 배열을 가져 와서 해당 바이트 배열을 다시 String으로 변환해야했습니다. 필자는 요청을 작성할 때 적절한 응답을 얻기 위해 String 자체가 아닌 바이트를 써야했습니다 (그렇지 않으면 일부 비 ASCII 문자가 유효한 ISO 8859-1이 아니라는 예외가 발생합니다).

+0

http://www.crazysquirrel.com/computing/general/form-encoding.jspx 난 당신이 여기에서 볼 수있는 해답을 발견했다. http://isurueng.blogspot.com/2011/12/utf-8-and-jspservlets-on-tomcatlinux.html – Isuru

답변

5

LANG 환경 변수를 변경하면 문제를 해결할 수 있습니다.

공식적인 방법은 sevlet 필터에서 문자 인코딩을 설정하는 것입니다 : http://wiki.apache.org/tomcat/Tomcat/UTF-8

배경 정보 :

+0

감사! 나는 이것에 대해 인터넷 검색을하고 있었지만 지금까지는 합리적인 설명을 찾지 못했습니다. – Slartibartfast

0

해결 방법은 LANG 환경 변수를 (내 경우 엔) en_US.UTF-8 또는 다른 UTF-8 로켈로 설정하는 것이 었습니다. 나는 여전히 서블릿이 제대로 작동하도록 코드에서 아무 것도 할 수 없다는 사실에 의아해하고있다. 그것을 할 수있는 방법이 없다면 그것은 내 관점의 버그입니다.