原因:原因是这可以说是spring mvc的一个bug,spring MVC有一系列HttpMessageConverter去处理用@ResponseBody注解的返回值,如返回list或其它则使用 MappingJacksonHttpMessageConverter,返回string,则使用 StringHttpMessageConverter,而这个convert使用的是字符集是iso-8859-1,而且是final的。所以在当返回json中有中文时会出现乱码。
使用如下语句既能解决:
new String(content.getBytes("ISO-8859-1"));
例如:
后台spring代码:
@ResponseBody
@RequestMapping(value="/addArticle")
public String AddArticle(String content,String name){
content = new String(content.getBytes("ISO-8859-1"));
name= new String(name.getBytes("ISO-8859-1"));
System.out.println(name+"--------"+content);
}
前台html代码:
function sendData(){
var c = $("#textarea").val();
$.ajax({
type: 'POST',
url: "http://localhost:8080/xml/contentController/addArticle",
data:{content:c,name:"HRX"},
dataType:"text",
success:function(data){
window.location.reload();
alert(data);
},
error:function(data){
alert(data.data);
}
});
}