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

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

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

#头条创作挑战赛#

前言

在开发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 { ..... }

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

58同城推经纪人“直播讲房”近50城成功上线 可随时为用户提供同屏带看服务?

58同城推经纪人“直播讲房”近50城成功上线 可随时为用户提供同屏带看服务?

原标题:58同城推经纪人“直播讲房” 提升在线带看服务品质 在新冠肺炎疫情防控期间,不少房产经纪企业延迟复工,对线下带看等服务带来冲击。2月18日起,58同城、安居客在北京、上海、广州、深圳、成都、杭州等近50个城市陆续上线房产经纪人“直播讲房”功能,帮助经纪人足不出户为买找房用户...

2022年楼市小阳春来了,1月统计局发布的70城市房价指数,房价环比上涨的城市增加到了14个

2022年楼市小阳春来了,1月统计局发布的70城市房价指数,房价环比上涨的城市增加到了14个

今天统计局把1月份70城市的房价指数发出来了,里面的数据和大家预想的一样,全国楼市的小阳春果然还是来了。这点,是无法避免的。 大家可以对比前几个月统计局发布的城市房价指数,在2021年10月份的时候,二手房房价环比上涨的只有6个城市,11月份的时候,二手房房价环比上涨的还是6个城市...

人民艺术家秦怡去世,为逃婚离家出走,一生曲折离奇,享年100岁

人民艺术家秦怡去世,为逃婚离家出走,一生曲折离奇,享年100岁

她是《铁道游击队》中宁死不屈的芳林嫂、《马兰花开》中性格坚毅的马兰、《篮球5号》中饱受苦难的篮球运动员林洁……这一个个在荧幕中坚毅美丽的女性角色都是由同一个人演绎,她就是人民艺术家秦怡。5月9日凌晨,秦怡在上海病逝,享年100岁。大多数年轻人对这位满头银发的老艺术家可能有些陌生,但对于父辈甚至更老的...

汇丰银行香港3家分行将率先试行一星期7天营业

汇丰银行香港3家分行将率先试行一星期7天营业

新京报贝壳财经讯(记者王雨晨)3月21日,新京报贝壳财经记者从汇丰银行处获悉,汇丰香港3家分行将率先试行一星期7天营业。 汇丰香港表示,香港自2月初全面撤销新冠疫情相关入境防控措施后,访港旅客人数持续上升,使用汇丰分行服务的海外港人或非本地居民都显著增加,2月份汇丰香港录得的新增非...

9、阿里巴巴矢量图库icon-font的运用

9、阿里巴巴矢量图库icon-font的运用

前言:今天说下在项目中的使用图标库GitHub:https://github.com/Ewall1106/mall 一、新建图标项目 1、打开阿里巴巴矢量图库这个网站,进入图标管理中,在里面新建一个项目 iconfont官网2、然后我们进入图标库中添加几个图片到购...

figma图标上传iconfont出现问题,我是这么解决的!

figma图标上传iconfont出现问题,我是这么解决的!

2022年的第001篇 距离2022年100篇原创目标还剩99篇 每一次的转角,都是新的自己 这是2022年的第一篇,去年的100篇原创目标只完成了34%,离目标还是有不小的距离,下次再找个时间聊聊 不过梦想还在,所以今年要继续加油了 今天分享的这个...