Spring MVC的jQuery的Ajax响应作为JSON编码问题(spring mvc jque

2019-10-17 04:43发布

Recenlty我有从服务器JSON响应波兰人物大问题。 我有这个简单的Ajax请求:

jQuery.ajax( "/GetSimpleRuleList",
    {
        type:"GET",
        responseType:"application/json;charset=utf-8",
        contentType:"application/json;charset=utf-8",
        cache:false
    } ).done( function ( data )
    {
        console.log( data );
        //nevermind here
    } );

而在服务器端适当的控制器:

@RequestMapping(value = "/GetSimpleRuleList", method = RequestMethod.GET)
public
@ResponseBody
String getRuleList( ServletResponse response )
{
    //magically getting my list here
     response.setCharacterEncoding( "UTF-8" );
    return //Using JACKSON ObjectWriter here
}

现在我100%肯定的是在服务器端和数据库encoidng从那里我从数据行,没问题这一点。 但是,当涉及到读响应从服务器,它是:

???

而不是波兰的字符,如:

ąćź

此外,它仅在接收到来自服务器的响应时,在发送数据的请求被正确编码失败。

在我的web.xml我有字符编码过滤器。

任何帮助? 我的想法。

Answer 1:

现在我100%肯定的是在服务器端和数据库encoidng从那里我从数据OK

尝试添加Content-Type头,如果它不存在INT你的回应:

response.setHeader("Content-Type", "application/json;charset=UTF-8")

获得肯定,从数据库中读取数据时使用UTF-8字符集。 杰克逊的编码默认为UTF-8,因此您的数据可能未使用UTF-8编码?!?

你从数据库中读取数据时使用何种编码? 也许ISO-8859-2?



Answer 2:

试着改变你的反应类型org.springframework.http.ResponseEntity

public ResponseEntity<String> getRuleList(){
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.add("Content-Type", "application/json; charset=utf-8");
    responseHeaders.setCacheControl("no-cache, max-age=0"); 
    String allyourjson = "yourjsongoeshere";
    return new ResponseEntity<String>(allyourjson, responseHeaders, HttpStatus.OK);
}


Answer 3:

可以使用弹簧注释RequestMapping上述控制器类receveing 应用/ JSON; UTF-8在所有响应

@Controller
@RequestMapping(produces = {"application/json; charset=UTF-8","*/*;charset=UTF-8"})
public class MyController{
 ...
@RequestMapping(value = "/GetSimpleRuleList", method = RequestMethod.GET)
public
@ResponseBody
String getRuleList( ServletResponse response )
{
    //magically getting my list here
     response.setCharacterEncoding( "UTF-8" );
    return //Using JACKSON ObjectWriter here
}
 ...
}


文章来源: spring mvc jquery ajax response as json encoding issue