2015-01-05 3 views
2

get 요청을 통해 json을 가져 오는 데 Java Spring Resttemplate을 사용하고 있습니다. 내가 얻는 JSON은 특수 문자 slike ü ö ä 또는 ß 몇 가지 이상한 것들 대신에 있습니다. 그래서 문자 인코딩에 문제가 있다고 생각합니다. 나는 인터넷에서 어떤 도움도 찾을 수 없다. 현재 사용중인 코드는 다음과 같습니다.Java Spring resttemplate 문자 인코딩 관련 문제

 String json = restTemplate.getForObject(
     overPassStatementPostCode, 
     String.class, 
     params); 

overPassStamementPostCode는 자리 표시자를 포함한 문자열입니다. params Map의 매개 변수로 채워집니다.

문제는 String json에 원하는 인코딩이 없다는 것입니다.

도움 주셔서 감사합니다. 감사합니다. Daniel

+0

응답 헤더를 기록 할 수 있습니까? 문자 인코딩을 찾으십시오. –

+0

로그 된 헤더는 다음과 같습니다. '{Date = [Mon, 05 Jan 2015 09:23:13 GMT], 서버 = [Apache/2.2.22 (Ubuntu)], Vary = [Accept-Encoding] Keep-Alive = [timeout = 5, max = 100], Connection = [Keep-Alive], Transfer-Encoding = [청크], Content-Type = [application/json]}' – Shachty

답변

0

web.xml에서 인코딩 필터를 설정해 보았습니까?

<filter> 
<filter-name>encodingFilter</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>encodingFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

설정을 위해 web.xml을 사용하지 않았습니다. . 이것에 대해 읽어야합니다. 나는 이것을 applicationcontext로 등록해야만한다고 생각합니까? – Shachty

0

HttpHeaders에 인코딩을 설정할 수 있습니다. 아래 코드는 귀하를 도울 수 있습니다 :

HttpHeaders requestHeaders = new HttpHeaders(); 
requestHeaders.set("Accept", "text/html;charset=utf-8"); 

HttpEntity<?> requestEntity = new HttpEntity(requestHeaders); 

RestTemplate template = new RestTemplate(); 
ResponseEntity<String> response = template.exchange(
       "http://localhost/hello", HttpMethod.GET, requestEntity, 
       String.class); 
+0

도움을 주셔서 감사합니다. 그러나 üäö ß 같은 문자는 여전히 올바르게 인코딩되지 않습니다. 지금 사용하고있는 코드는 다음과 같습니다 :'HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.set ("Accept", "text/html; charset = utf-8"); HttpEntity requestEntity = new HttpEntity (requestHeaders); RestTemplate template = new RestTemplate(); ResponseEntity JSON = template.exchange ( overPassStatementPostCode, HttpMethod.GET, requestEntity, String.class, PARAMS),' – Shachty

+0

당신이'ISO-8859-1'에 문자 집합을 변경 한 후 다시 시도하십시오 수 있을까요? – Mithun

+0

은 requestHeaders.set 메소드에서 charset을 변경했지만 여전히 운이 없습니다. – Shachty