当前位置:首页 > 杂谈 > 正文内容

一招教你如何解决中文乱码-如何解决中文乱码的问题和答案

2023-10-08 14:01:15TONY杂谈250

#头条创作挑战赛#

前言

在开发JavaWeb项目时,由于不同的浏览器和服务器对请求和响应处理的编码格式不同,从而导致了中文乱码的现象出现。同时许多的编码方式对中文的处理并不是特别好,所以一般我们需要对请求和响应做出统一的配置,即设置编码集为UTF-8。这篇文章将会告诉你出现乱码到底是怎样解决的。

方法一:直接在Servlet中配置

处理乱码时最直接的方式就是在Servlet中对请求和响应进行配置。具体配置如下:

//设置请求编码格式 request.setCharacterEncoding("utf-8"); //设置响应的编码格式 response.serCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");

这种方式是最简单直接的方法,但是它也存在一个很大的问题。当业务量多起来时,需要为每个Servlet都加上这几行代码,造成了代码冗余。所以需要想办法把这几行代码抽离出来

方法二:使用过滤器处理乱码

在介绍这种方法之前先来了解一下什么是过滤器

1、什么是过滤器?

过滤器是介于浏览器和web资源之间的,它的作用是将浏览器发来的请求进行“过滤”后再发送给web资源,然后再把web资源返回的响应“过滤”后再返回给浏览器。它的用处也有很多,处理乱码只是其众多功能之一。

上一张图具体描述一下这个流程吧

2、如何利用过滤器处理乱码

使用过滤器处理乱码,首先得有一个过滤器的类

package com.demo.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //统一处理请求和响应的乱码 servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=utf-8"); //处理过后放行 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }

写好过滤器后有两种方式可以使过滤器发挥其功效,分别是在web.xml中配置标签和使用注解的方式

在web.xml中配置<filter> <!-- filter-class 标签用来配置过滤器的位置 ,格式为包名+类名 filter-name 标签相当于给过滤器起个别名 --> <filter-name>myFilter</filter-name> <filter-class>com.demo.filter.MyFilter</filter-class> </filter> <filter-mapping> <!-- filter-name 标签内容要与上边配置的名字相同 url-pattern 标签要拦截的请求名 /* 表示拦截所有请求 --> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>使用注解配置

可以使用注解的方式来配置过滤器,不过如果使用了注解就不要再使用web.xml的配置,二者选一种就好,具体方法为:

//在过滤器类上方加上注解@WebFilter ,然后依然通过/* 表示拦截所有请求 @WebFilter("/*") public class MyFilter implements Filter { ..... }

“一招教你如何解决中文乱码-如何解决中文乱码的问题和答案” 的相关文章

河北12345热线实行7×24小时人工服务

河北12345热线实行7×24小时人工服务

原标题:河北12345热线实行7×24小时人工服务 河北新闻网讯(河北日报记者解楚楚)8月20日,河北省政府办公厅印发《河北省12345政务服务便民热线管理办法》,多管齐下,加强全...

卢布强势逆袭!短短两个月,从暴跌85%到暴涨23%!

卢布强势逆袭!短短两个月,从暴跌85%到暴涨23%!

来源:上海证券报 仅仅两个多月,俄罗斯卢布就上演强势逆袭,从年度表现最差货币一举跃升至年度表现最佳货币。 连日以来,卢布持续走强,走势堪称“豪横”。据莫斯科交易所数据,截至当地时间5月25日,卢布对美元升破56,为2018年2月以来的最高;卢布对欧元汇率为2015年6月以来...

抖音小店入口在哪找

抖音小店入口在哪找

很多小伙伴在问:抖音小店入口在哪找?听说直播行业很赚钱,想做却苦于自己不懂行没资源?新公司无主播资源无外站流水,不符合直播平台公会入驻资格,想开直播公司不懂运营方法技巧? 我们可为您提成:【抖音小店】代入驻,新直播公司课程培训,从平台玩法规则,公司选址装修硬件设备采购,运营主播招募...

2月70城房价:大连新房涨幅全国前十!

2月70城房价:大连新房涨幅全国前十!

国家统计局昨日发布了2020年2月份70个大中城市商品住宅销售价格变动情况统计数据,数据透露哪些重要信息? 1、近5年来新房下降城市首次超过上涨城市 新房方面,2月份70个大中城市新建商品住宅价格环比上涨的城市数量为21个,相比1月份得47个,有明显减少现象;下跌...

云恒制造:2023高考今日开考,1291万考生奔赴考场

云恒制造:2023高考今日开考,1291万考生奔赴考场

  6月7日,2023年全国高考正式拉开大幕,全国将有1291万考生奔赴考场,报考人数再创历史新高。近期,多地出台措施保障考生顺利考试,同时,为保证考试安全,多部门开展净化涉考网络环境、打击销售作弊器材、打击替考作弊等专项行动,综合治理考试环境。  各地出台举措,保障考场秩序  今年高考,各地都将防...

70城房价出炉!长沙2月新建商品住宅价格环比上涨0.2%

70城房价出炉!长沙2月新建商品住宅价格环比上涨0.2%

三湘都市报3月18日讯(文/视频全媒体记者卜岚实习生周逸婷)近日,国家统计局发布了今年2月70个大中城市房价数据。其中,30个城市房价上涨,40个城市房价下跌。一线城市新建商品住宅销售价格环比上涨0.5%,长沙新房价格环比上涨0.2%,二手房价格环比下跌0.2%。...