Servlet 中文乱码解决方案

来源:互联网 发布:粤贵银分析软件 编辑:程序博客网 时间:2024/05/22 00:07
一、Servlet表单提交中文乱码解决方案

GET方式时的乱码问题


1.确保表单所在的页面编码为UTF-8。


<!--在HTML5中 http-equiv和content可以省略,只需要指定 charset="UTF-8"即可-->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">


2.如果Servlet容器是Tomcat8.0及之后则正常取值不会出现乱码。(前提是项目工作空间默认编码是UTF-8)


3.如果Servlet容器是Tomcat8.0之前的则需要先用ISO-8859-1解码,在用UTF-8编码:


String name = request.getParameter("name");
byte[] Bytes = name.getBytes("ISO-8859-1");//ISO-8859-1解码
name = new String(Bytes,"UTF-8");//UTF-8编码


POST方式时的乱码问题


1.确保表单所在的页面编码为UTF-8。
<!--在HTML5中 http-equiv和content可以省略,只需要指定 charset="UTF-8"即可-->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">


2.在服务器端读取参数的前面使用 request.setCharacterEncoding("utf-8")设置字符编码为UTF-8。
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
注:此方法只针对post请求有效


二、Servlet输出到页面中文乱码的问题(response响应数据到游览器中文乱码的问题)

在获取Write/Out对象及调用out方法之前调用setContentType方法及setCharacterEncoding方法


response.setContentType("text/html");//告诉游览器,数据类型为text/html
response.setCharacterEncoding("UTF-8");//告诉游览器,数据编码为UTF-8

//response.setHeader("Content-Type","text/html;charset=utf-8");//等价于上面两句代码
原创粉丝点击