编码
常见字符编码:iso-8859-1(不支持中文)、gbk(系统默认编码,中国的国标码)、utf-8(万国码)
响应编码
当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso
一般浏览器会把数据当成gbk
reponse.setCharacterEncoding("utf-8"):设置响应编码
response.setHeader("Content-Type","text/html;charset=utf-8");:告诉浏览器用什么编码,还会设置setCharacterEncoding
(简洁方法response.setContentType("text/html;charset=utf-8");(写在getWriter()之前))
请求编码
客户端在页面中提交表单或点击超链接。在发送请求时,服务器发送该页面的编码是什么,客户端就用什么编码发送请求。但服务端默认使用ISO-8859-1来解码
POST请求:
只需在获取参数值前调用request的setCharacterEncoding("utf-8"),之后便可获取参数String name = request.getParameter("username");
get请求:
URI默认使用IOS-8859-1编码
法一:可以设置Tomcat文件中conf/server.xml中<Connector>标签内设置URI编码,可解决乱码问题(但是不建议使用)
法二:获取参数String name = request.getParameter("username");
反编码
byte[] bytes = name.getBytes("ISO-8859-1");
name = new String(bytes,"utf-8");
(Tomcat8之后版本get直接使用UTF-8编码,不需要转换,但post仍需转换)
URL编码
表单的类型:Content-Type:application/x-www-form-urlencoded,这种方式可以把非英文在客户端和服务器之间传递时转换成网络适合的方式
它不是字符编码
它是用来在客户端与服务器之间传递参数的一种方式
GET请求中的中文没有URL编码,可能会出现丢失字节,所以需要把链接中的中文参数使用url编码
POST请求(使用表单)使用URL编码,Tomcat会自动解码
URL编码String username = URLEncoder.encode(username,"utf-8");
URL解码String username = URLDecoder.decode(username,"utf-8");
本文详细介绍了常见的字符编码格式,包括iso-8859-1、gbk和utf-8,并探讨了HTTP响应与请求过程中的编码设置方法。针对GET与POST请求的不同特性,提供了编码转换的解决方案。
5901

被折叠的 条评论
为什么被折叠?



