Spring RestTemplate不保留重音字符

时间:2014-07-22 12:23:02

标签: spring solr character-encoding urlencode non-ascii-characters

我一直在尝试在URL中使用重音字符来调用SOLR。 我的网址看起来像这样:

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

从浏览器触发URL时,我得到了正确的结果但是从RestTempalte.exchange尝试时(URI,HttpMethod.GET,entity,String.class) 我在SOLR上看到的日志显示重音字符被转换为“?”如下图所示

问=(名称: “米莎.E”)

我已将RestTemple请求charSet设置为“UTF-8”,它仍然会这样做。

我的SOLR正在Jetty上运行。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用URLEncoder

调用RestTemplate之前对HTML字符进行编码
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);