0

URL에 악센트 부호 문자를 사용하여 SOLR을 호출하려고했습니다. 내 URL은 다음과 같습니다봄 RestTemplate은 악센트 문자를 보존하지 않습니다

"http://host:8983/solr/principal/select?q=**name:%22Michaël.e%22**" 

화재 브라우저에서 URL 나는 올바른 결과를 얻을 때 때 RestTempalte.exchange (URI, HttpMethod.GET, 기업, String.class) 내가 볼 로그에서 시도 SOLR에서 "?"로 감추어 진 악센트 문자를 보여줍니다.

Q = 아래와 같이 (이름 : "미샤합니다 .e") 나는 RestTemple 요청 캐릭터 세트를 설정 한

에 "UTF-8"그것은 여전히 ​​같은 않습니다.

내 SOLR이 제티에서 돌아갑니다.

답변

0

당신은 답장을 URLEncoder

String baseUri = "http://host:8983/solr/principal/select?q=**name:%22"; 
// TODO get name from somewhere 
String name = "Michaël.e"; 
String encodedName= = URLEncoder.encode(name, "UTF-8"); 

RestTempalte.exchange(baseUri + encodedName + "%22**",HttpMethod.GET, entity, String.class); 
+0

감사를 사용하여 호출 RestTemplate 전에 HTML 문자를 인코딩하는 시도 할 수 있습니다. 그것은 재미있는 문자로 변환합니다. ** name : % 22Micha ë l.e % 22 ** – prasad

+0

죄송합니다. StringEscapeUtils가 아니라 URLEncoder를 의미합니다. 이는 HTML 특수 문자를 이스케이프합니다. –