欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb——响应编码与请求编码

程序员文章站 2022-06-16 18:03:37
一、引言二、response重定向;定时刷新;缓存;三、request客户端信息;reference;请求包含与请求转发;获取请求参数;四、总结...

一、引言


以前非常怵头web中编码问题,如今没办法必须搞了,硬着头皮把里面的东西搞清楚了,供大家分享下==务必先了解原理,再扎进代码==


二、编码基础


这里主要理解字符集与字符编码问题。

字符集就像一个字库,类似英文,中文,日文等,只是一个库;

字符编码就像一个映射关系,将字符集映射为一个个数用计算机存储;如utf,注意utf-8,utf-6等都是一个字符集,不同的字符编码==


三、响应编码


一般tomcat服务器默认解码ios-8859-1,从tomcat8以后默认utf-8不用再修改,浏览器默认解码是gbk,这里所以我们一般都自己设置,这样比较好控制。

这里response.setHeader("content-type", "text/html;charset=utf-8");有两个作用:1返回数据按照utf-8编码;2设置contenttype告知浏览器编码格式,然后浏览器就会用相应的格式解码,从而不会出现乱码==

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setHeader("content-type", "text/html;charset=utf-8");
		//request.setCharacterEncoding("utf-8");
		response.getWriter().println("哈哈哈");
	}

JavaWeb——响应编码与请求编码


四、请求编码


这里分为get请求和post请求:


1、get请求

直接使用getParameter()就可以,不用转换,要是tomcat7及之前的可能要设置注释代码,因为之间的tomcat默认gbk,要转换一下。

然后设置返回编码格式即可setHeader,这里只能用gbk和utf-8,我开始设置了iso-8859-1除了乱码,后来发现自己脑子water了,iso-8859-1根本不支持中文==


		String name=request.getParameter("name");
/*		byte[]bytes=name.getBytes("iso-8859-1");
		name=new String(bytes,"utf-8");
		response.setHeader("content-type", "text/html;charset=utf-8");*/
		
		response.setHeader("content-type", "text/html;charset=utf-8");
		response.getWriter().print(name);


2、post请求

post请求要设置相应的解码方式,这个一般由发出post请求的界面决定,比如有表单的jsp界面它默认编码utf-8,发送的请求也是utf-8的。

		request.setCharacterEncoding("utf-8");
		String name=request.getParameter("name");
		response.setHeader("content-type", "text/html;charset=utf-8");
		//response.setHeader("content-type", "text/html;charset=utf-8");
		response.getWriter().print(name);



JavaWeb——响应编码与请求编码


五、URL编码


URL编码,就是将中文转换为16进制表示,为了防止网络传输中数据丢失。

get一般不会对中文编码,post会对中文进行编码,然后在浏览器自动编码,在服务器自动解码。

JavaWeb——响应编码与请求编码


四、总结


  • 设置响应编码;

  • 设置请求编码,get与post;

  • URL编码;


本文地址:https://blog.csdn.net/xcymorningsun/article/details/63845293