您的位置:首页 > 产品设计 > UI/UE

request请求post、get方式中文乱码处理

2018-03-13 15:19 393 查看
第一种方式:获取以后自己转码

String name = request.getParameter("name");
String age = request.getParameter("age");
String aaa = request.getParameter("aaa");

name = new String(name.getBytes("UTF-8"),"UTF-8");
age = new String(age.getBytes("ISO-8859-1"),"UTF-8");
aaa = new String(aaa.getBytes("ISO-8859-1"),"UTF-8");System.out.println("-----------"+name); System.out.println("-----------"+age); System.out.println("-----------"+aaa);第二种:在获取之前设置编码 //给request设置编码为UTF-8
//必须在调用所有getParameter之前
request.setCharacterEncoding("UTF-8");

String name = request.getParameter("name");
String age = request.getParameter("age");
String aaa = request.getParameter("aaa");
System.out.println("-----------"+name);
System.out.println("-----------"+age);
System.out.println("-----------"+aaa);
Get()方式

1.利用ISO-8859-1转码的方式:public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//在Get方式请求中request.setCharacterEncoding("UTF-8")不在起作用

//request.setCharacterEncoding("UTF-8");

String name = request.getParameter("name");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

System.out.println(name);
}
2.

GET参数不在请求正文中,而是在URL中。所以不能使用request的setCharacterEncodng()来设置GET参数的编码。
处理GET参数编码可以有两种方式:第一种是设置<Connector>元素的URIEncoding属性的值为UTF-8。即conf\server.xml中的<Connector>元素的URIEncoding属性。
一旦设置了这个属性,那么对于GET参数就直接是UTF-8编码的了。但是,<Connector>元素来说,对整个Tomcat都是有效的!
3.

Ø  第三种JavaScript对超链接做URL编码
处理这个问题的办法是把GET请求中的参数使用JavaScript做URL编码,URL编码后的内容就不再是中文了,这样IE6也就不会丢失字节了。<a href="#" onclick="click1()">ff</a>
<script type="text/javascript">
function click1(){
var path = encodeURI(encodeURI("servlet/RequestDemo?namea=任亮"));
location.href = path;
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: