欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

JavaWeb学习——Request参数中文乱码处理(11)

时间:2023-08-10
目录

问题Post解决方案Get解决方案

URL编码

解决办法 演示 问题

首先演示get的乱码

我们传进了带中文的参数,结果发现控制台上确实是乱码

然后用post演示,发现也是乱码

Post解决方案

由于我们知道post的读入数据的方式是字符串流,而且用的编码方式是ISO-8859-1所以我们规定它编码方式为UTF-8,把它放在doGet或doPost方法内的最上面即可

Get解决方案

get就麻烦多了,因为get底层的获取方式与post不一样,post是读入流,而get是字节读入

如果用刚刚post的方式,我们可以看到结果还是乱码,这说明确实不能直接套用

然后再剖析一下原理我们发现就像下面这张图

而tomcat里的ISO-8859-1是写死的,并且并没有仍和解码方式给我们,所以不能用’设置编码方式’来解决

URL编码

将字符串按照编码方式转为二进制,每个字节转为2个16进制并在前面加上%


在java里面由这两个工具类可以进行URL编码与解码:
URLEncoder里encode
URLDecoder里decode

解决办法

我们可以发现这两个不同的编码方式有一个地方是共同的:底层二进制
因此,我们可以把它转成二进制字节数据,再转成UTF8就好了

传入的参数是张三

我们可以发现张三确实又变回了张三
所以写成一句话就是
${name} = new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);

演示

因此,我们可以实现对后台乱码的处理
写一个表单,链向Servlet.java
重新编码与输出

结果便没有了乱码!

感谢黑马!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。