【Servlet】HTTP请求中文乱码的问题
请求中文乱码
在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的处理编码方式有关。
POST请求乱码
浏览器会按当前显示页面所采用的字符集对请求的中文数据进行编码,而后再以报文体的形式传送给服务器,Servlet在调用getParameter()方法获取参数时,会以HttpServletRequest对象的getCharacterEncoding()方法返回的字符集对其进行解码,而该方法的返回值在未经过setCharacterEncoding(charset)方法设置编码的情况下为null,这时getParameter()方法将以服务器默认的“ISO-8859-1”字符集对参数进行解码,而“ISO-8859-1”字符集并不包含中文,于是造成中文参数的乱码问题。
解决办法:
在调用getParameter()方法前先调用setCharacterEncoding(charset)方法设定与页面请求编码相同的解码字符集。
GET请求乱码
GET请求参数以“?”或“&”为连接字符附加在URL地址后,根据网络标准RFC1738规定,只有字母和数字以及一些特殊符号和某些保留字才可以不经过编码直接用于URL,因此在请求参数为中文时必须先由浏览器进行编码后才能发送给服务器,服务器端对GET请求参数依照服务器本身默认的字符集进行解码。
在服务器端,由于GET请求参数是作为请求行发送给服务器的,因此Servlet在通过getParameter()获取请求参数时,并不能使用setCharacterEncoding(charset)方法指定的字符集进行解码,而是依照服务器本身默认的字符集进行解码。
Tomcat服务器各版本中默认的URIEncoding字符集并不完全相同,例如,Tomcat6和Tomcat7都默认为“ISO-8859-1”,这类版本中,对于GET请求的中文参数必须经处理后才会避免乱码问题,因此在实际开发中尽量避免使用GET请求来传递中文参数。
【Servlet】HTTP请求中文乱码的问题相关推荐
- postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题
对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...
- html请求socket乱码,Socket http请求中文乱码有关问题
Socket http请求中文乱码问题 各位高手,麻烦帮忙看看这个 http请求乱码问题,百思不得其解啊.... Socket http请求"http://www.gome.com.cn/e ...
- Spring-解决请求中文乱码问题
Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...
- Tomcat 中 GET方式 请求 中文乱码 出现的原因
网上很多关于GET方式请求中文乱码的解决方案,大体类似. 这里主要讲一下Tomcat在处理URL参数过程中, 究竟是为什么会导致了GET方式请求的中文乱码. 一句话概括就是: Tomcat默认将单字节 ...
- 解决get请求中文乱码问题
在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...
- 010_Post请求中文乱码
一. 创建一个GBK编码的html文件, 发送post请求 1. 新建一个PostLuanMa的Web工程 2. 新建一个postGBK.html文件 3. 更改postGBK.html编码为GBK ...
- JSP和Servlet的六种中文乱码处理方法
一.表单提交时出现乱码: 在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式.所以请求的时候便有get请求和post请求.每 ...
- JavaWeb——Get、Post请求中文乱码问题
最近在重温JavaWeb基础内容,碰到了之前也时常遇到的中文乱码问题,想着反正是经常要处理的,不如当即就把它整理出来放在博客里,省得遇到时再去到处搜. 1. Post请求乱码的解决方案: 手工创建一个 ...
- 解决Post请求中文乱码问题
Web应用的中文乱码由来 1.Tomcat默认使用字符集ISO-8859-1,属于西欧字体集 2.解决乱码的核心思路是将ISO-8859-1转换为UTF-8 3.Servlet中求请与响应都需要设置U ...
最新文章
- 数学狂想曲(三)——统计杂谈, PID算法, 20世纪10大算法, 矩阵向量的积
- mysql+自动还原备份_Mysql 自动备份与恢复
- Django REST framework 序列化
- Ubuntu安装OpenTSDB
- 博弈论(二)完全信息静态博弈
- html 拦截境外ip,Windows服务器系统怎么屏蔽国外IP的访问
- my games / BF3 / GTA5 / NFS18 / sanguowushuang6 / RA2 / KOF97 / FIFA
- 如何通过stm32驱动电源检测芯片cs5463
- Android Studio获取数字签名(SHA1)
- 超声检测的不同扫描方式
- win7底部任务栏还原方法
- 数据结构—串-基本知识点(第五章)
- MES与设备层的集成
- 今天早上跑通了 PF-AFN!
- 不靠谱的Access 轻松破解密码
- SLAM流程之视觉前端
- 数字人民币生态体系进一步完善 试点场景加速拓展
- [ACNOI2022]零一串
- 简单的c语言实现剪子包袱锤
- 怎么下载没水印的谷歌卫星地图_谷歌卫星地图有水印怎么办