编码问题
一、响应编码(服务器---->客户端)
1.服务器默认iOS标准进行编码2.客户端默认gbk进行解码
--------------------------------
对于:HttpServletResponse的字符流:PritnWriter
设置服务器编码方式:
setCharacterEncoding("utf-8");
设置服务器编码方式+客户端解码方式:
setHeader("Content-Type","text/html;charset=utf-8");
setContentType("text/html;charset=utf-8")
二、请求编码(客户端---->服务器)
1.客户端发送请求的编码方式a.在地址栏中直接连接(gbk)
b.页面中的超链接或表单(utf-8)
2.服务器解码方式默认用ISO解码
a.post请求
在获取请求参数前:
request.setCharacterEncoding
再getParameter()获取参数
b.get请求
先获取参数:
String temp = request.getParameter("name")
再反编码:
byte[] bytes=temp.getBytes("ISO-8859-1")
再用utf-8编码
temp = new String(bytes,"utf-8")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
byte[] bytes=username.getBytes("ISO-8859-1");
username=new String(bytes,"utf-8");
response.getWriter().write(username);
System.out.println(username);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//在获取参数前,先调用request.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
response.getWriter().print(username);
System.out.println(username);
}
三、URL编码
http://www.w3school.com.cn/tags/html_ref_urlencode.html之所以要进行URL编码,是因为Url中有些字符会引起歧义。
URL编码的原则就是使用安全的字符(没有特殊用途或者特殊意义
的可打印字符)去表示那些不安全的字符。