猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
Spring MVC如何处理从前端传过来的参数变成乱码?
前端请求如果是中文的话,会变成乱码。Spring MVC怎么处理这种情况?或者spring 能在xml怎么配置然后解决这个乱码问题?
摇曳的蔷薇
浏览 1031
回答 3
3回答
饮歌长啸
如果你的请求是post,中文应该不会有乱码。如果有,看看你的web.xml有没有配置<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>如果你的请求是get,参数有中文的,比如 ?name=张上,按照如下处理前端encodeURIComponent(encodeURIComponent(url)),对url进行二次编码。后端:拿到参数值,使用URLDecoder.decode(s, "UTF-8")解码一下。这样方式确实可行的,答主在实际项目总使用过。举个例子吧:前端: <script type="text/javascript"> var url = "/xxx/param/test"; var name = "张上"; name = encodeURIComponent(name); name = encodeURIComponent(name);//二次编码 alert(name); url = url + "?name="+name; window.location.href = url; </script>后端:@Controller @RequestMapping(value="/param") public class ParamController extends BaseController<ParamEntity> { /** * @throws UnsupportedEncodingException * */ @RequestMapping(value="/test",method=RequestMethod.GET) public String test(@RequestParam("name") String name) throws UnsupportedEncodingException{ name = URLDecoder.decode(name, "UTF-8");//实测,可以正确的得到中文。 System.out.println(name); return "index"; } }注意:get请求有中文参数,可以指定容器使用何种编码规则来解码提交的参数,但是这种做法不建议使用,推荐使用二次编码吧。
0
0
0
aluckdog
String name = request.equest.getParameter("name"); 获取到有可能乱码的值 if (name.equals(new String(name.getBytes("iso8859-1"),"iso8859-1"))) { name = new String(name.getBytes("iso8859-1"), "utf-8"); 转码后的值 }
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续