Jsp中参数乱码的解决方式:
一、请求方式分get和post
1、get的转码
String name=request.getParameter("name");
String output=new String(name.getBytes("ISO-8859-1"),"UTF-8");
2、post的转码
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
二、文件编码
如果以上方法未能解决乱码,原因有:
1、pageEncoding="utf-8" 。此参数是Jsp对应Servelt的文件编码,参数编码与文件编码不一致会造成乱码。
2、contentType="text/html; charset=utf-8"。此参数是返回客户端内容的编码,参数编码与返回内容编码不一致会造成乱码。
三、Tomcat解决乱码
配置Tomcat的server.xml,在Connector中添加属性URIEncoding或userBodyEncodingForURI
1、URIEncoding:对所有的GET请求进行统一的重新编码(解码)的编码。
- 弊端:此属性会影响到所有项目的编码
2、useBodyEncodingForURI:表示是否使用request.setCharacterEncoding对GET提交的参数进行重新编码,默认false
3、URIEncoding和useBodyEncodingForURI区别是
- URIEncoding:对所有GET方式的请求的数据进行统一的重新编码
- useBodyEncodingForURI:根据响应页面的request.setCharacterEncoding进行重新编码,不同的页面可以有不同的编码
四、总结
要确保页面不出现乱码,一、二、三步要联合使用,并且使用一致的编码格式