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

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

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

目录

问题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
重新编码与输出

结果便没有了乱码!

感谢黑马!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存