已解决Servlet中Request请求参数中文乱码的问题
创始人
2024-06-01 15:37:22
0

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:java 小白到高手的蜕变🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

在Servlet中,请求参数如果存在中文,不管是POST请求还是GET请求,都会出现请求参数乱码的问题,本篇博将分别给出解决方案!

POST请求参数乱码解决

POST请求参数获得的中文之所以发生乱码是因为POST请求获取参数的时候,底层是以getReader()这种字符流的方式获取POST的请求体参数,getReader()底层对于获取的中文字符串的编码方式是“ISO_8859_1”,所以控制台输出时是乱码,因此在获取POST请求参数时,先要设置编码方式,然后获取参数,例如:

//解决乱码:POST,getReader()
request.setCharacterEncoding("UTF-8");//设置字符输入流的编码// 获取username参数
String username = request.getParameter("username");

然后就OK了!

GET请求参数乱码解决(Tomcat8以下出现)

对于GET请求乱码的处理就不像POST这么简单,要处理GET的乱码问题哦,你先要探究这个中文乱码是怎么出现的,这其实是因为浏览器对于中文的URL编码和Tomcat服务器对于URL中中文参数的解码方式不同而导致的!

先来了解一下浏览器URL编码的规则:

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

在这里插入图片描述
这里是以UTF-8对汉字进行编码的,一个汉字三个字节,而Tomcat服务器解码时却是以“ISO_8859_1”(编码只一个字节),所以出现乱码。
请添加图片描述
但是Tomcat的这个解码方式是在获取GET请求的方法getQueryString()底层写死的,也没提供可以修改的接口,因此就需要其他解决方案!
不管什么方式的编码解码,他们的二进制都是一样的,因此我们可以先对乱码数据进行编码(解码时是ISO_8859_1,编码时要一致):转为字节数组,然后再对这个字节数组以UTF-8的方式解码,就获得正常的汉字啦!

//GET,获取参数的方式:getQueryString
//乱码原因:tomcat进行URL解码,默认的字符集ISO-8859-1
//先对乱码数据进行编码:转为字节数组
byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
//字节数组解码
username = new String(bytes, StandardCharsets.UTF_8);//一行代码的写法
username  = new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);

这样就解决GET请求参数的乱码问题了!当然这个方式是通用的,也能解决POST的乱码问题!

需要注意:Tomcat 8.0之后,已将 GET 请求乱码问题解决,设置默认的解码方式为 UTF-8

但是我们在开发中用的Maven的tomcat插件最新版本却还是tomcat7,这也是因为社区版无法导入本地Tomcat(社区版有Tomcat插件可以试试),所以如果开发中用的tomcat7,还是要了解!

相关内容

热门资讯

平板电脑安卓系统没有wifi,... 亲爱的读者,你是否也有过这样的经历:拿着心爱的平板电脑,却发现它竟然没有连接上WiFi?这可真是让人...
采集无锡安卓系统的公司,技术驱... 你有没有想过,在这个科技飞速发展的时代,手机操作系统的重要性简直不言而喻?而在中国,有一个城市,它的...
安卓系统期末考试,全面解析与备... 亲爱的读者们,你是否也像我一样,最近被安卓系统的期末考试搞得焦头烂额?没错,就是那个看似简单,实则暗...
名图支持安卓系统吗,安卓系统下... 最近有没有听说一个超级火的图片编辑软件——名图?相信很多人都在用它来修图、美颜,甚至创作一些有趣的图...
安卓仿苹果八系统,创新体验 你有没有发现,最近安卓手机界掀起了一股仿苹果八系统的热潮?没错,就是那个曾经让我们惊艳的iPhone...
在linux安卓windows... 你有没有想过,无论你是用电脑办公,还是用手机刷剧,这些设备背后的操作系统可是起着至关重要的作用呢?今...
安卓原生系统修改键位,键位修改... 你有没有发现,用安卓手机的时候,有时候按错键位真是让人头疼?别急,今天就来给你详细聊聊安卓原生系统修...
安卓系统手游排行,指尖上的娱乐... 你有没有发现,最近手机上玩的手游越来越多了?各种类型、各种画风,简直让人眼花缭乱。今天,就让我带你一...
原生态安卓系统主题,尽享纯净视... 你有没有发现,手机的世界里,主题就像是衣服,可以瞬间改变整个手机的气质呢?今天,就让我带你一起探索一...
安卓手机刷系统需要密码 你有没有遇到过这种情况:安卓手机刷系统时,突然蹦出一个密码提示,让你一头雾水?别急,今天就来给你详细...
京东读书安卓系统退出,轻松告别... 你知道吗?最近在互联网上掀起了一阵小小的波澜,那就是京东读书安卓系统的退出。这事儿可不小,毕竟京东读...
安卓怎么变成苹果的系统,揭秘跨... 你有没有想过,把你的安卓手机变成苹果系统,是不是就像换了个新伙伴一样,感觉倍儿棒?没错,今天就来聊聊...
安卓系统设置老出现1,安卓系统... 你是不是也遇到了这个问题?每次打开安卓手机,总是被那个“安卓系统设置老出现1”的提示搞得心烦意乱?别...
安卓系统升级太麻烦 你有没有发现,每次安卓系统一升级,那可真是让人头大啊!手机里原本流畅的操作,突然变得卡顿,有时候还出...
安卓系统有什么设置方法,打造专... 你有没有发现,你的安卓手机里藏着无数的小秘密?想要让你的手机更加个性化、更加高效?那就得好好研究一下...
安卓13系统是什么软件,新一代... 你知道吗?最近安卓系统又来了一次大升级,那就是安卓13系统。这可不是一个小打小闹的更新,而是一次全面...
安卓更新系统续航,续航革命即将... 你有没有发现,最近你的安卓手机更新了系统,但是续航能力却好像不如以前了呢?别急,今天就来聊聊这个让人...
安卓系统是垃圾吗 最近在网络上看到一个话题,让人忍不住想聊聊:安卓系统是垃圾吗?这可不是一个简单的选择题,而是涉及到我...
取代安卓系统国产化,安卓系统取... 你知道吗?最近科技圈里可是掀起了一股热潮,那就是取代安卓系统的国产化大潮!这可不是闹着玩的,而是实实...
怎样升级安卓手机系统vivo,... 亲爱的手机控们,你是不是也和我一样,对手机系统升级充满了期待和好奇呢?尤其是当你手中的vivo手机,...