JavaWeb乱码问题及统一全站编码(通过Filter实现)
1.
public class CharacterFilter implements Filter {
private String characterEncoding = null;
FilterConfig fc;
public void init(FilterConfig filterConfig) throws ServletException {
fc = filterConfig;
if (null != fc &&
null != fc.getInitParameter("encoding") &&
!"".equals(fc.getInitParameter("encoding"))) {
characterEncoding = fc.getInitParameter("encoding");
} else {
characterEncoding = "UTF-8";
}
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// 拦截所有的请求 解决全站中文乱码
// 指定 request 和 response 的编码
request.setCharacterEncoding(characterEncoding);
//将response对象中的数据以UTF-8解码后发向浏览器
response.setCharacterEncoding(characterEncoding);
//告诉浏览器输出内容为HTML,并使用UTF-8对HTML内容进行解码
response.setContentType("text/html;charset="+characterEncoding);
chain.doFilter(request, response);
}
public void destroy() {
}
}
2.配置Filter,注意编码Filter注册要放到最前面
<filter>
<filter-name>CharacterFilter</filter-name>
<filter-class>com.hbxy.web.c04.filter.CharacterFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping
补充:关千编码问题
在Servlet中,request/response处理中文时,使用默认配置往往会出现乱码,如:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
OutputStream out = response.getOutputStream();
String data =“张三”;
out.write(data.getBytes("UTF-8"));
}
输出乱码的问题是程序用UTF-8编码,而如果浏览器用GB2312解码,会出现乱码
Servlet乱码分为request乱码和response乱码


Response响应乱码解决办法
- 1、response.setCharacterEncoding(“UTF-8”); 用千response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要设置(因为数据里已经进行了编码)
- 2、response.setContentType("text/html;charset=UTF-8"); 是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码
- 3、建议全站设置统一的编码:JSP/Servlet统一设置成UTF-8或者GBK
- 也即在Filter中Response设置:
- response.setCharacterEncoding(“UTF-8”);
- response.setContentType("text/html;charset=UTF-8");
RequestPOST请求

RequestGET请求

JavaWeb乱码问题及统一全站编码(通过Filter实现)的更多相关文章
- eclipse 统一设置编码_项目工程统一设置成utf8编码_eclipse代码规范
在做项目的时候文件有的时候编码不同一 经常出现乱码,eclipse统一设置编码 可以解决项目编码混乱的问题, 设置eclipse java,jsp,css,js文件编码的方法如下: 1.在工具栏中点击 ...
- javaweb的Filter过滤器设置全站编码
FIlter配置全站编码有一种方法是重写getParameter方法,也就是继承HttpServletRequestWrapper在重写getParameter方法,还有一种就是如下: public ...
- 如何解决JavaWeb乱码问题
作为一个合格的web开发人员应该是什么问题都遇到过的,尤其是乱码问题.大家也许都体会到了,我们中国人学编程,很大的一个不便就是程序的编码问题,无论学习什么技术,我们都需要探讨他的编码问题. 今天来讲一 ...
- JavaWeb 乱码问题终极解决方案!
经常有读者在公众号上问 JavaWeb 乱码的问题,昨天又有一个小伙伴问及此事,其实这个问题很简单,但是想要说清楚却并不容易,因为每个人乱码的原因都不一样,给每位小伙伴都把乱码的原因讲一遍也挺费时间的 ...
- java-web乱码问题解决
<一>乱码问题(设置tomcat uriencoding=’utf-8’); 统一设置编码过滤器 <1>get请求: request.setCharacterEncoding( ...
- 【Java】全站编码过滤器GenericEncodingFilter代码与配置
编码过滤器GenericEncodingFilter: package com.fuck.web.filter; import java.io.IOException; import java.i ...
- windows 控制台cmd乱码(及永久修改编码)的解决办法
注册 windows 控制台cmd乱码(及永久修改编码)的解决办法 转载 2017年11月02日 22:49:52 1067 windows 控制台cmd乱码的解决办法 我本机的系统环境: OS Na ...
- MySQL的搜索引擎,统一字符编码 和忘记MySQL密码如何破解
忘记mysql密码 linux平台下,破解密码的两种方式 [root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!! [root@egon ~] ...
- mysql 统一字符编码
配置文件中的注释可以有中文,但是配置项中不能出现中文 #在mysql的解压目录下,新建my.ini,然后配置 #1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效 [mysql ...
随机推荐
- 和为S的连续正整数序列(双指针法)
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 032、Java中判断某一个数字是奇数还是偶数
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 人脸识别 API Key和Secret Key作用
App key简称API接口验证序号,是用于验证API接入合法性的.接入哪个网站的API接口,就需要这个网站允许才能够接入,如果简单比喻的话:可以理解成是登陆网站的用户名 App Secret简称AP ...
- 清除windows激活信息
1.管理员运行命令提示符 在命令提示符中输入 slmgr /upk---删除当前KMS密匙 出现"成功地卸载了产品密匙"后,继续依次执行下面两个命令 slmgr /ckms---此 ...
- NIO三大组件简介
NIO简介 NIO 是面向缓冲区(或者说面向块)编程的, 因为Buffer底层本质上就是内存块.数据被读取到一个缓冲区, 稍后再被它处理, 需要时数据可在缓冲区前后移动, 从而增加了处理过程中的灵活性 ...
- IDA使用初步
按空格看结构图,再按空格看汇编代码,按F5反编译 shift+F12 搜索中文字符串,通过字符串所在位置定位关键信息. 双击可能出flag的语句跳转至关键字符串. 想F5生成C伪代码,先crtl+X打 ...
- 点亮一个LED之参数传递规则
1 说明 实验平台: JZ2440 CPU: S3C2440 2 ARM-THUMB Procedure Call Standard(ATPCS: ARM-Thumb过程调用标准) 图1 ...
- Linux每日练习-复习紧急救援模式下重改root权限密码 20200225
- 关于VMware vSphere Client安装时,.net framework4进度条卡住不动(亲测)
亲测有用的办法 1.点击电脑桌面右下角的"开始"按钮,点击"运行"按钮,在弹出的节目输入框中输入"regedit". 2.在弹出来的&quo ...
- windows中的运行命令
首先按“开始”-“运行”,或按WIN键+R,进入『运行』窗口. 下面是常用的运行命令 (按英文字符顺序排列) appwize.cpl----添加.删除程序 access.cpl-----辅助功能选项 ...