转自:https://blog.csdn.net/qq_27093465/article/details/77453393#commentBox点击打开链接

现在需求是在浏览器里面直接发请求,浏览器发请求,默认发的是get请求,然后带参数,参数包含中文汉字。麻烦就在这里,参数里面的汉字,在后台接收的时候,是乱码。

这么简单的传递参数的方式,是不OK的。
下面看详情。

get请求中文参数乱码的解决之道

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


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

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

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

get请求中文参数乱码的解决之道

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

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


有的说:(结果:失败)

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

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

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

get请求中文参数乱码的解决之道

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

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

尴尬啦。还是不OK。


有的说:(结果:失败)

后台解码姿势换了一种,

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

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

结果如下:

get请求中文参数乱码的解决之道

还是乱码。不OK。


有的说:(结果:成功)

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

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

get请求中文参数乱码的解决之道

哎,竟然OK啦。

good


但是,

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

关于特殊字符的测试。

get请求中文参数乱码的解决之道

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

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


最后,

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

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

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

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

安全的,他实现就复杂。

相关文章:

  • 2021-07-06
  • 2021-08-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
  • 2021-06-16
猜你喜欢
  • 2021-12-21
  • 2021-05-27
  • 2021-10-04
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
相关资源
相似解决方案