2013-10-31 2 views
0

안녕하세요, 저는 UTF-8 호환으로 작업하고있는 응용 프로그램 중 하나를 만들려고했습니다. 내 env는 다음과 같습니다 : linux os, apahce 웹 서버 http 리스너, tomcat 서블릿 엔진UTF-8 문제 URIEncoding = "UTF-8"

apache는 mod_jk로 구성되고 tomcat은 ajp 커넥터를 사용합니다. 나는 다음과 같은

가 bashrc에있는 언어를 설정 server.xml에 커넥터 URIEncoding="UTF-8"useBodyEncodingForURI =true을 설정 시도 내가 권고에 UTF-8 몇 사이트에 대한 기본 지침을 읽고 기반으로 한

/.profile LANG =en_US.UTF8

구성 아파치 서버를 사용하여 UTF-8을 기본 문자 등이

로 설정 지정 즉, 기본 으로 UTF-8 인코딩을 사용하도록

tomcat을 시작하는 동안 utf-8을 java args로 설정하십시오.

JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8" 

사용하여 나는 또한 나의 웹 페이지 내가 난독증이 UTF-8 문자 데 Inspite 모든이의

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

로 구성 적절한 메타 태그가 있음을 확인했습니다. 어떤 생각이 잘못 됐어?

재미있는 관찰은 인터넷 익스포터와 chorme에만 어려움이 있습니다. firefox를 사용하여 내 서버에 utf-8 문자를 보낼 때 올바르게 읽을 수 있습니다. 그러나 IE와 chorme에서 문자가 엉망이되고 있습니다. 문제가 어디에있을 수 있습니까?

크롬과 파이어 폭스 사이의 유일한 변화는 contentType 헤더입니다.

파이어 폭스의 요청에 대한 요청 헤더는 세드릭

Content-Type: application/x-www-form-urlencoded 

어떤 생각이다 (내가 확인하지 않았다뿐만 아니라, 가능한 IE) 크롬 등

Content-Type: application/x-www-form-urlencoded; charset=utf-8 

을 다음과 같다 여기서 뭐라구?

답변

1

Allrite, 마지막으로 문제를 파악했습니다. 기본적으로

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

내 필터 중 하나를 요청 매개 변수를 읽으려고하고, 하나가 필요 는 하단에보고 된 버그 아래의 링크 목록은 주위에 무슨 일이 있었 서커스를 이해하는 데 매우 유용했다 할려면 요청하십시오. 쿼리 매개 변수를 읽기 전에 setCharacterEncoding (desiredEncoding)을 수행하십시오.

그래서 char enconding을 설정하는 SetCharacterEncodingFilter를 추가하려고 시도했는데 분명히이 필터는 tomcat 7 (확실하지는 않지만)에서 사용할 수 있으며 tomcat6.0.x에 있기 때문에 작동하지 않았습니다.

그래서 charEncoding을 올바르게 설정하는 필터를 직접 작성해야했습니다.

이제 모든 관리 된 문자를 머리에서 꺼낼 수있게되었습니다. 그들은 yest 밤부터 나를 너무 많이 괴롭 혔습니다.

+1

URIEncoding = "UTF-8"커넥터가 게시물이 아닌 GET 요청 만 처리하는 것 같습니다. –