解决Java中POST和GET请求的中文乱码问题
当我们通过表单向服务器提交数据时,数据的流向是:浏览器→服务器,服务器→浏览器,如果浏览器端和服务器端所采用的编码方式不一致,就会出现乱码问题。
输入时
POST请求
服务器端获取正常编码格式的字符串
1,首先确保表单所在的页面按照指定的字符集打开
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
2,在服务器端按照这个编码格式解码即可
request.setCharacterEncoding("utf-8");
GET请求
1,使用meta确保表单所在页面按照指定字符集打开
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
2,在服务器端使用如下方式获取参数
String userName = request.getParameter("username");
userName = new String(userName.getBytes("iso-8859-1"),"UTF-8");
输出时
POST请求和GET请求一样,都需要在输出对象调用输出方法之前调用setContentType(String content)方法
response.setContentType("text/html;charset=utf-8");
作用
1,通知容器,在调用out.println方法输出时,使用指定的字符集
2,生成消息头中content-type的值,通知浏览器,服务端返回的数据类型和字符集
注意
在JSP中,<%@page pageEncoding=”UTF-8”%> 该指令只是设置页面本身的编码,这是因为jsp文件与Servlet不同,jsp文件需要由容器来编译,所以需要为其指定编码。
取值时,需要设置指定编码。
<%@page contentType=”text/html;charset=UTF-8”%>
这句话相当于:response.setContentType("text/html;charset=utf-8");。