在java web项目中,我的前台用的是velocity,而不是jsp。发现前台和后台间传输数据(post和get)会出现中文乱码的情况。
解决方法如下:
如果后台要接收前台传送过来的数据(通过HttpServletRequest),则需接入以下代码,对接收的参数进行解码:
request.setCharacterEncoding("UTF-8");
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
String stuId = new String(request.getParameter("stuId").getBytes("ISO-8859-1"), "UTF-8");
其中name和stuId是后台要接收的数据。
同时如果后台要进行重定向,并且有参数传递;如果参数中有中文,则要对参数编码(假设name为参数):
name = new String(java.net.URLEncoder.encode(name,"UTF-8"));
同时接收方也要用刚才的方法对参数进行解码。
这样,综合起来的代码就是:
@RequestMapping("/login.htm