Hello fellow Stackoverflowers.GET 요청 매개 변수의 문자 인코딩
우리는 자바/스프링 MVC 응용 프로그램에 스마트 폰 응용 프로그램에서의 HTTP GET 웹 서비스 호출을하고 있습니다 :
나는 내가 몇 가지 도움을 필요로하는 문제가있다. 우리는 mod_proxy 프록시 설정을 사용하는 Apache 서버가있는 Tomcat 응용 프로그램 서버에 있습니다.
URL에 묻혀있는 매개 변수 중 하나는 "Männen"이라는 단어로, 매개 변수 중 하나 인 조직 이름입니다. 이 응용 프로그램은 Jquery Ajax GET 요청을 만들고 매개 변수는 "M % E4nnen"으로 응용 프로그램을 떠납니다. 이는 "ä"가 올바르게 URL 인코딩되었음을 의미합니다. Spring 컨트롤러에 도착하면 "Mnnen"으로 왜곡되었습니다.
나는 이것들에 대해 꽤 많은 스레드를 발견했으며 모든 커넥터에 URIEncoding = "UTF-8"을 추가하여 Tomcat server.xml 파일을 수정하는 것이 좋습니다. 물론, 나는 이것을 시도했다. 그것은 변화를 만들었지 만 문제를 해결하지는 못했습니다. 문자열은 이제 "Mnnnen"으로 전달됩니다. Apache 프록시 구성의 ProxyPass 매개 변수에 "nocanon"을 추가하라는 내용의 스레드도있었습니다. 이 시도했지만 아무런 차이가 없습니다. , 내가 요청에 따라 할 수있는 로그를 사용
:
- 아파치 액세스 로그에서이 매개 변수가 "M %의 E4nnen"
- 아파치 프록시 로그에서로 기록되고, 매개 변수는 다음과 같이 기록됩니다 "M % E4nnen"
- 톰캣 localhost_access 로그에서이 매개 변수는 "M %의 E4nnen"요청을 수신 스프링 컨트롤러
- 로 기록되고, 상기 파라미터는
My Spring 애플리케이션에도 문자 인코딩 필터가 있지만 이해하는 한 요청 본문에서만 작동합니다.
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
정말 다른 무엇을 시도하거나 다른 어디에서 볼 모르는 : 아래 그림과 같이 그것은 구성되어 있습니다. 누구든지 올바른 방향으로 나를 안내 할 수 있다면, 매우 높이 평가 될 것입니다.
입력 해 주셔서 감사합니다. 내가 분명히하자. 이것은 RESTful 웹 서비스입니다. 관련된 HTML이 없습니다. 서비스는 GET 요청 (요청 매개 변수가 포함 된 URL)을 보내고 서비스에서 처리하고 XML 구조로 반환합니다. –
그런 다음 init 매개 변수'encoding'은 HTTP 기본값 인'ISO-8859-1'이어야합니다. –
Tomcat 또는 Apache의 초기화 매개 변수는 무엇입니까?모든 UTF-8 프로세스를 달성하려고 할 때 ISO-8859-1을 사용하는 것이 이상하게 들립니다. –