来源:互联网 作者:|发布时间:2018-09-14|0浏览
我们就分别以GET和POST为例来说一下中文参数乱码的问题。
上次我们讨论了JavaEE开发中的响应乱码和文件下载时文件名乱码的原因和解决方案。今天我们继续讨论乱码的问题。
首先是请求的乱码问题,这个问题出现在Tomcat8以前的版本(不包括Tomcat8)。我们还是分情况来讨论,众所周知,我们现在使用的HTTP协议中的请求常用主流的方式有两种,一种是GET;另一种是POST。我们就分别以GET和POST为例来说一下中文参数乱码的问题。
如果是POST方式请求,请求的参数会在HTTP协议的请求体中携带过来,而表单中的数据默认会以application/x-www-form-urlencoded的格式传输。而这种格式是用类似UrlEncoder.encode()的方式以UTF-8编码的。这样携带的参数会以流的方式直接到达服务器中放入request对象内部的缓冲区中,以二进制的方式存储,可以理解为一个byte数组来存储的0101的二进制数据。而调用request.getParameter()时会把缓冲区的数据拿出来用Url的格式构造成一个字符串,而构造时使用的默认编码就是request的默认编码,而request又是由Tomcat创建的,所以和Tomcat的默认编码一致,也就是ISO-8859-1。所以中文字符串直接乱码了。
Free course or class
18986369768
Copyright©襄阳金砺教育科技有限公司襄阳网站建设:创杰科技 鄂ICP备2023020818号-1