ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

get请求URL传中文参数后台接收乱码的解决之道

2022-02-02 14:36:04  阅读:138  来源: 互联网

标签:编码 请求 get URL 汉字 乱码 参数 后台


现在需求是在浏览器里面直接发请求,浏览器发请求,默认发的是get请求,然后带参数,参数包含中文汉字。麻烦就在这里,参数里面的汉字,在后台接收的时候,是乱码。
这么简单的传递参数的方式,是不OK的。
下面看详情。

在这里插入图片描述

这个就是简单的在URL里面带中文汉字参数,然后,就在后台乱码了,哦。这就悲剧啦。

1,有的人说:(结果:失败)

后台解码的时候,如下,
String setMetricText = URLDecoder.decode(setMetricValue, “UTF-8”);

这么滴可以解决问题,我就尝试一下,如下。

在这里插入图片描述

我这个处理方式呢,前台发送请求方式,还是跟上面那样,直接发请求,未对中文汉字参数做任何编码方面的修改。

结果,也就如上图那样,还是乱码。

2,有的说:(结果:失败)

在前台发请求的时候,给参数编码一下。后台再解码一下。

encodeURI(“geos汉字传递测试.xls”)

然后,把编码过的参数,给添加到URL里面去,如下

在这里插入图片描述

不信的你可以自己试验一把,把下面编码过的参数放到浏览器的URL里面,然后,一回车,就变成如上图的情况啦。

然后,后台还是乱码依旧。

尴尬啦。还是不OK。

3,有的说:(结果:失败------因为编发格式写反了,给修正一下这个就能用啦。)

后台解码姿势换了一种,

filePath = new String(filePath.getBytes(“utf-8”), “ISO-8859-1”);

后台这么干,前台直接发请求,不编码,试试。

结果如下:

在这里插入图片描述

还是乱码。不OK。

后来有人留言说我上面代码写反了,应该如下这么写,就好。

filePath = new String(filePath.getBytes(“ISO-8859-1”), “utf-8”);

结果还就真的成功了。

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LebP91B-1643782297150)(/images/573/f21656d8910ceeec8c244c4dbef9f1ed.png)]**

在这里插入图片描述
在这里插入图片描述

前端的请求不需要去两次编码,后段就可以直接拿到非乱码的值。OK

4,有的说:(结果:成功------对于特殊字符是不怎么支持的)

encodeURI(encodeURI(“geos汉字传递测试.xls”))

这么干,在前台发请求的时候,给中文汉字参数,来两次编码,如上,然后,后台不变解码一次具体看截图。

在这里插入图片描述

哎,竟然OK啦。

good

但是,

哎,一遇到,但是,就是文章的转折点啦。要出现坑了,注意啦。

关于特殊字符的测试。
在这里插入图片描述

可以看到,也是经过了2此的编码,但是,到后台之后,发现,还是出现了部分偏差。

具体就看图中的偏差吧,反正是前后台不一致啦,这就是问题啦。

最后,

除非是要搞死人的需求,不然,不带这么玩的。因为这个2次转码,也不是百分百安全的

所以,咱还是要么不带中文汉字参数,要么咱就换个请求方式吧。

简单的都不安全,这不跟hashmap和hashtable一个道理吗?

简单的,快捷的,他就线程不安全。

安全的,他实现就复杂。

标签:编码,请求,get,URL,汉字,乱码,参数,后台
来源: https://blog.csdn.net/qq_43842093/article/details/122769322

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有