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

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

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

#头条创作挑战赛#

前言

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

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

抖音seo是什么?抖音SEO优化是什么意思?

抖音seo是什么?抖音SEO优化是什么意思?

原标题:抖音seo是什么?抖音SEO优化是什么意思?1:什么是seo抖音seo是什么?抖音SEO优化是什么意思?现在越来越多的人都在使用抖音这个短视频应用,那么对于抖音来说seo是什么呢?更多干货可以关注柯南的公众号:柯南SEO简单的说,seo是一种提高网站的搜索引擎优化的方法。它可以让你的网站在搜...

重庆中心城区快递正陆续恢复

重庆中心城区快递正陆续恢复

12月6日,上游新闻记者从多家物流企业获悉,截至目前,中心城区除高风险区外,快递收派件服务已大部分恢复,部分物流企业收派件服务已全面恢复。 顺丰速运 顺丰速运中心城区(渝中区、大渡口区、江北区、沙坪坝区、九龙坡区、南岸区、北碚区、渝北区、巴南区、两江新区、重庆高新区)及周边...

视频号内测运费险 或将于 5 月正式面市 智己汽车联席CEO刘涛:第三款车和第四款车分别对标特斯拉Model Y、Model 3

视频号内测运费险 或将于 5 月正式面市 智己汽车联席CEO刘涛:第三款车和第四款车分别对标特斯拉Model Y、Model 3

【亿邦原创】亿邦动力独家消息,微信视频号正在灰度测试运费险,有商家称测试已持续近三个月。此前,有商家告诉亿邦动力,视频号运费险可能会在今年 5 月正式上线。 运费险是电商重要基建之一,几乎是平台标配服务。2020 年,抖音就上线抖店运费险服务,此后不断推出补贴计划。2021 年,快...

南京加强互联网销售危险化学品安全管理联动工作

南京加强互联网销售危险化学品安全管理联动工作

转自:南京晨报 晨报讯(通讯员 李鸿雁 南京晨报/爱南京记者 刘通)记者近日从南京市应急管理局了解到,南京市应急管理局、市委网信办、市教育局等6部门联合印发《南京市加强互联网销售危险化学品安全管理联动工作的实施方案(试行)》(以下简称《方案》),要求发挥联合监管合力,进一步加强互...

校园招聘进工行,派去成都95588一年,这一年到底什么样子,求分享经历?

校园招聘进工行,派去成都95588一年,这一年到底什么样子,求分享经历?

不会是今年来吧?随便说点吧,想到什么说什么。 怎么说呢,95588处于成都高新区,属于新开发的地区,周边什么都是新的,但工地也多,工区周边没什么娱乐项目,吃处也少(找吃的要跑好远),除非自己有车否则交通也不便利,自行车电瓶车是必不可少的,这...

工行邢台开元清风楼支行暖心帮助女孩获95588表扬

工行邢台开元清风楼支行暖心帮助女孩获95588表扬

10月8日,一位年轻的姑娘推着行李箱来到了工行邢台开元清风楼支行的大门口,艰难地往台阶上抬,大堂经理苑洁琼见状连忙去帮忙将姑娘的箱子抬了上来,并询问她需要办理什么业务,经了解得知这位外地姑娘想办理一张银行卡当工资...