第一种方式:获取以后自己转码
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="#" οnclick="click1()">ff</a>
<script type="text/javascript">
function click1(){
var path = encodeURI(encodeURI("servlet/RequestDemo?namea=任亮"));
location.href = path;
}
</script>