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

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

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

#头条创作挑战赛#

前言

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

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

现在的快递服务正常吗?你关心的快递问题都在这里

现在的快递服务正常吗?你关心的快递问题都在这里

交汇点讯 4月6日,江苏省邮政管理局发布《近期快递服务常见问题解答》,就群众关注的关于快递服务的常见问题进行解答。 问:现在快递服务正常吗? 答:受疫情影响,部分位于封控区、管控区的快件处理场所和网点处于关停状态,同时部分企业场所由于疫情防控工作不符合标准,被要求完成整改之...

58同城、安居客“移动经纪人”升级适用多类智能手环,助经纪人高效服务

58同城、安居客“移动经纪人”升级适用多类智能手环,助经纪人高效服务

房产服务线上化转移加强了经纪人对于智能手机的依赖,然而在线下带看中,出现了无法及时查看手机导致错过来自线上的用户消息和微聊信息等,以及各类软件消息众多导致找房用户信息被淹没等各类影响用户体验的问题。...

抖店平台商户如何实现流量变现,掌握这些很重要

抖店平台商户如何实现流量变现,掌握这些很重要

原标题:抖店平台商户如何实现流量变现,掌握这些很重要 随着互联网技术的发展,网络用户日益增长,短视频这种创作门槛低、可竞争性强、进入退出灵活、潜在受众面极其宽广且包容性极高的新型媒...

3月70城房价出炉:一线城市新建和二手住宅销售价格同比分别上涨5.2%、11.4%

3月70城房价出炉:一线城市新建和二手住宅销售价格同比分别上涨5.2%、11.4%

每经编辑:王鑫 国家统计局网站公布3月份70个大中城市商品住宅销售价格变动情况。2021年3月份,各线城市商品住宅销售价格环比涨幅与上月相比变动幅度不大,同比涨幅继续上升。其中,一...

工行德州分行聚焦“一老一小一新”打造有温度的银行

工行德州分行聚焦“一老一小一新”打造有温度的银行

让老有所乐、幼有所教、“新”有所属的幸福图景照进现实。近年来,工行德州分行践行金融为民理念,以守护“一老一少一新”美好生活为目标,聚焦民之所盼,发挥金融所长,通过对老、少、新等群体实施多样化、普惠型、见实效的服务举措,不断提升“一老一少一新”的幸福指数。彰显负责任大行的良好形象 舒...

剑网3:新七夕盒子被哄抢一空,看看前几代,你还爱它吗?

剑网3:新七夕盒子被哄抢一空,看看前几代,你还爱它吗?

大唐江湖,幸甚有你!这里是从不出奇遇的游戏日报狸纸,见过各位大侠!最近新出的七夕盒子已经在上架后一秒内被热情的玩家们哄抢一空了,不知道大侠们有没有参与这次的抢盒子活动呢? 如果大侠对这个盒子还处于犹豫不决、没有下手的话,那就先听狸纸讲一讲...