get请求中文乱码问题

对于浏览器发出的HTTP请求: tomcat 默认是ISO-8859-1 解码

URI: xxxxx.action?key="+encodeURIComponent(“中文”)

在服务器获取 到key的值是tomcat使用 ISO-8859-1编码进行解码的字符,会出现乱码的问题。目前有两种方式可以解决该问题。

1:通过转成编码为ISO-8859-1字节数组,然后再转成UTF-8的字符串

String value= new String(request.getParameter("key").getBytes("ISO-8859-1"), "UTF-8");

2:在页面上进行两次编码

xxxxx.action?key="+encodeURIComponent(encodeURIComponent(“中文”))

后台获取数据: String value= URLDecoder.decode( request.getParameter("key"),"UTF-8")

实现原理:

.encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.

. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.

假设页面端输入的中文是一个“中”,按照下面步骤进行解码

1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD]  此时已经没有了多字节字符,全部是单字节字符。

2、第二次encodeURI,进行编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%25.把数组最后变成[%25E4,%25B8,%25AD]然后就把处理后的数据[%25E4,%25B8,%25AD]发往服务器端,

当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数应用服务器最初获得的就是发送来的[%25E4,%25B8,%25AD],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,,都能得到[%E4,%B8,%AD],因为都会把%25解析成%.并把这个值返回给getParameter方法

3、再用UTF-8解码一次,就得到"中"了。

get 请求中文乱码问题相关推荐

  1. Spring-解决请求中文乱码问题

    Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...

  2. postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题

    对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...

  3. 【Servlet】HTTP请求中文乱码的问题

    请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...

  4. Tomcat 中 GET方式 请求 中文乱码 出现的原因

    网上很多关于GET方式请求中文乱码的解决方案,大体类似. 这里主要讲一下Tomcat在处理URL参数过程中, 究竟是为什么会导致了GET方式请求的中文乱码. 一句话概括就是: Tomcat默认将单字节 ...

  5. 解决get请求中文乱码问题

    在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...

  6. html请求socket乱码,Socket http请求中文乱码有关问题

    Socket http请求中文乱码问题 各位高手,麻烦帮忙看看这个 http请求乱码问题,百思不得其解啊.... Socket http请求"http://www.gome.com.cn/e ...

  7. Get,Post请求中文乱码问题有效解决方法

    对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考 ...

  8. 请求中文乱码_【1】执行Http请求访问网页

    向导团队 - fourkings [1]执行Http请求访问网页 1. 目标网址 我们的目标网址是当当网,url地址是 http://book.dangdang.com/ 2. 获取HTML文档内容 ...

  9. get请求中文乱码问题

    Get中文乱码解决 Get请求类型: <form action="${pageContext.request.contextPath}/addArtical.action"  ...

  10. 010_Post请求中文乱码

    一. 创建一个GBK编码的html文件, 发送post请求 1. 新建一个PostLuanMa的Web工程 2. 新建一个postGBK.html文件 3. 更改postGBK.html编码为GBK ...

最新文章

  1. 前端开发中的Error以及异常捕获
  2. android使用C/C++调用SO库
  3. 西霞口船业公司疑遭外商合谋欺诈
  4. Tensorflow【实战Google深度学习框架】全连接神经网络以及可视化
  5. TeeChart Pro ActiveX教程(十九):TeeChart工具集(五)
  6. 位置传感器matlab,永磁同步电机无位置传感器控制matlab仿真【续贴二】
  7. java返回json格式的状态码数据(二)
  8. gradle wrapper 版本与 android build tool 版本匹配要求
  9. sqlalchemy_外键连接表
  10. leetcode python 042收集雨水
  11. Docker进阶 dockerfile指令构建docker镜像
  12. 雅诗兰黛公司宣布线上业务部门领导层更新
  13. 戴尔服务器r620引导盘,戴尔R620服务器WINDOWS操作系统无引导盘安装方法.ppt
  14. 【苹果相册推】群发安装软件设备推送通知SSL允许证
  15. 如何快速理解最大流和最小割
  16. Polygon Soup
  17. [非技术][小孩]色色的小孩
  18. 网络虚拟化 SDN NFV 和企业骨干网的演化
  19. 77种互联网盈利创新模式
  20. 【VBA研究】再论取EXCEL有效行列数方法

热门文章

  1. 利用宝塔面板部署SSM项目
  2. linux 音频驱动实验
  3. c++的vector初始化
  4. win7计算机iis,win7系统如何打开iis管理器|win7系统打开iis管理器的方法
  5. 按键精灵java_Java 按键精灵
  6. 【JAVA】每日练习——02
  7. js链接oracle数据库语法,js连接oracle数据库
  8. K8S coreDNS部署及简单验证
  9. 数据仓库(2)数仓、大数据与传统数据库的区别
  10. SQL注入防御绕过和sqlmap简单介绍