泽西岛-@QueryParam和字符编码

时间:2019-01-08 15:53:35

标签: utf-8 character-encoding jersey http-headers httprequest

我需要传递一个约束值,该约束值包含来自不同UTF语言(德语,塞尔维亚语,加泰罗尼亚语,中文等)的文本,作为HTTP请求中的queryParam。

尝试从另一端使用URLEncoder.encode和URLDecoder.decode,但无效。

尝试使用UriComponent.encode / decode,也没有帮助。

尝试使用utf-8字符集将标头添加到我的请求中。

尝试使用@ Connsumes / @ Produces / @ Encoded jersy批注,但仍然相同。

客户端

preferredCountries: function() {
    $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{action:"f2Countries"},
    dataType:"json",
    success:function(data){},
    error: function() {  }
 });
 },

...

服务器端:

private static final String ENCODING = "UTF-8";
private static final String CHARSET= "charset=" + ENCODING;

Invocation.Builder builder;
    try {
        builder = baseTarget.path(apiPath + "setConstraint")
                //.queryParam("constraint", constraint)
                .queryParam("constraint",UriComponent.encode(constraint, UriComponent.Type.FRAGMENT))
                .queryParam("path", URLEncoder.encode(jsonRuleIdString, ENCODING))
                .request(MediaType.APPLICATION_JSON)
                .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON + "; " + CHARSET );
    } catch (UnsupportedEncodingException ex) {
        throw new SpecificationException(ex.getMessage());
    }

致谢。

1 个答案:

答案 0 :(得分:0)

此帖子之后: http://jersey.576304.n2.nabble.com/QueryParam-and-character-encoding-td6928014.html

我搜索了“ tomcat查询参数utf编码”并达到以下解决方案: How to set request encoding in Tomcat?

一旦我将 URIEncoding =“ UTF-8” 添加到了tomcat容器的server.xml 中的标记中,就起作用了。