【问题标题】:Spring RestTemplate is not preserving accent charactersSpring RestTemplate 不保留重音字符
【发布时间】:2014-07-22 12:23:01
【问题描述】:

我一直在尝试在 URL 中使用重音字符来调用 SOLR。 我的网址如下所示:

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

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

q=(name:"Micha?.e")

我已将 RestTemple 请求 charSet 设置为“UTF-8”,它仍然如此。

我的 SOLR 正在 Jetty 上运行。

【问题讨论】:

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


    【解决方案1】:

    您可以尝试在使用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);
    

    【讨论】:

    • 感谢您的回复。它转换为一些有趣的字符 name:%22Michaël.e%22
    • 抱歉,我指的是 URLEncoder,而不是 StringEscapeUtils,它正在转义 HTML 特殊字符。
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 2016-06-26
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2014-03-16
    • 1970-01-01
    相关资源
    最近更新 更多