UTF-8编码,JSP,jQuery,Spring的问题
我在一个apache tomcat 6中有一个带有spring,jsp和jquery的web应用程序,一个jsp页面有一个表单,通过ajax调用whit jquery发送数据到我后端的Spring MultiActionController。
问题在于输入forms的UTF-8字符串。
我已经做了以下事情:
在我的HTML上:
. .
在jquery ajax调用:
$.ajaxSetup({ scriptCharset: "utf-8" ,contentType: "application/x-www-form-urlencoded; charset=UTF-8" }); $.ajax( { type: "GET", url: "./saveData.action", contentType: "charset=utf-8", data: { name: $('#name').val(),...
在tomcat server.xml上:
在MultiActionController上
public ModelAndView saveData(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name");
所以如果在name参数中我放了这样的东西:
玛丽亚
在后端,我得到
MarÃa。
我已经尝试了所有我读到的东西,我不知道错误是什么,谢谢你的帮助:)
一切看起来都很好,直到你在变量中得到参数。 它只是你的后端,仍然需要配置为使用UTF-8。 例如, System.out.println()
或您要将检索到的参数发送到的记录器也应使用UTF-8。 或者您存储检索到的参数的数据库也应该使用UTF-8。 或者与该DB交互的JDBC驱动程序。 或者您要将数据写入的文本文件。 等等。
也可以看看:
- Unicode – 如何使角色正确?
与你的具体问题无关 ,这条线
request.setCharacterEncoding("UTF-8");
应该在 Spring启动之前执行。它设置POST请求编码,只要Spring在执行操作之前确定请求体,这将失败(请注意,此行对GET请求完全没有影响)。 Spring有一个CharacterEncodingFilter
就是这样做的。 在web.xml
注册:
characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true characterEncodingFilter /*
我遇到了与角色相同的问题,我通过以下方式解决了它:
request.setCharacterEncoding("utf-8"); StringBuffer requestContent = new StringBuffer(); do { bytesRead = request.getInputStream().readLine(bytes,0,bytes.length); if(bytesRead > 0) { requestContent.append(new String(bytes,0,bytesRead,"UTF-8")); } } while(bytesRead > 0);
然后从requestContent获取你的字符串以“name =”开头