我在我的ajax调用中尝试了以下行,因为它是在互联网上建议的:
contentType:“application / json; charset = ISO-8859-1”
但它没有改变任何东西。每当我用ajax调用带有重音的字符串参数(例如società),在我的控制器(我使用Java,弹簧框架)时,我会收到SocietÃ。我已经尝试了第一个UTF-8,这是默认的(据我所知),但没有。这是我的全部功能:
function foo(customer, society) {
$.ajax({
url: 'notMappedAcoStaffing.do',
type: "GET",
contentType: "application/json; charset=ISO-8859-1",
data: { customer: customer, society: society},
success: function(data) { $('#content').html(data); },
error: function(error) { alert("error" + error); }
});
}
我将后端的值视为
@RequestMapping(method = RequestMethod.GET)
public ModelAndView fooController(@RequestParam("customer") final String customerParam, @RequestParam(value="society",required=false) Integer societyParam) {...}
有没有办法解决这个问题? 感谢您的帮助。
更新:我仍然不知道为什么我在控制器上收到它作为参数失真的原因。但是当我按照以下方式转换它时:How do I convert between ISO-8859-1 and UTF-8 in Java?,它一切都很好。看到它有效,我再次尝试在我的ajax调用中设置UTF-8但没有成功......它解决了我的问题但老实说我不喜欢这样。如果您在ajax呼叫方面有更好的解决方案,请与我分享。感谢
答案 0 :(得分:1)
您的部分问题是您正在使用HTTP GET
,这基本上意味着您的数据将嵌入到URL本身的查询字符串(http://example.org/?customer=foo&society=bar)中。使用特殊字符时可能会出现问题。
特别是,contentType
属性涉及您根本没有的请求的正文,因此目前影响不大。
考虑使用HTTP POST
发送数据(并删除您的自定义contentType
),这会为您提供更强大的数据编码功能 - 然后在请求正文中发送,而不是在URL中发送。它可能会彻底解决您的问题,或者您可能需要将服务器配置为使用与客户端相同的编码
- 我建议双方使用UTF-8。