ajax设置返回编码,使用Spring MVC和Ajax返回字符串时编码错误

当AJAX调用遇到编码问题时,可能需要设置请求的字符编码。本文介绍了如何在jQuery和香草JS中设置mimeType为UTF-8,并在服务器端(如Tomcat)和Servlet响应中确保使用UTF-8编码。确保网络容器、响应和请求的字符编码一致,以正确处理AJAX的UTF-8编码。
摘要由CSDN通过智能技术生成

小编典典

发生这种情况是因为默认情况下,AJAX调用使用浏览器的默认编码(fe ANSI)。要对此进行覆盖,您需要执行以下操作:

jQuery的风格 - mime类型 :

$.ajax({

url: "get_label",

mimeType:"text/html; charset=UTF-8",

success: function(result)

{

alert(result);

$("#parameter_select label").text(result);

}

});

香草JS 风格:

xhr.overrideMimeType("text/html; charset=UTF-8")

但是从另一方面来说,您需要确定该服务器还会返回适当的响应。为此,您需要检查以下内容:

通过在 server.xml中*为 连接器 设置添加 URIEncoding =“ UTF-8” 来添加对Web容器(即Tomcat)的UTF-8支持;检查此以获取更多信息。***

如果以前的更改没有帮助(尽管有帮助),请确保servlet响应的字符集也是 UTF-8 。

为此,您可以使用方法的显式调用:

@RequestMapping("get_label")

public @ResponseBody String getLabel(HttpServletResponse response)

{

String str = "בדיקה";

//set encoding explicitly

response.setCharacterEncoding("UTF-8");

return str;

}

或者,对于@ResponseBodySpring 3.1+ 似乎更可取:

@RequestMapping(value = "get_label", produces = "text/html; charset=UTF-8")

public @ResponseBody String getLabel(HttpServletResponse response)

{

String str = "בדיקה";

return str;

}

最后,我想澄清一下,为了正确处理UTF-8编码的AJAX调用,您必须确保:

网络容器正确支持此功能

响应的字符编码为UTF-8

AJAX请求字符编码也为UTF-8

2020-06-01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值