您的位置:首页 > 其它

响应编码、请求编码与URL编码

2017-07-30 20:59 232 查看

编码

常见字符编码: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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编码