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 ...
随机推荐
- mysql悲观锁处理赠品库存超卖的情况
处理库存超卖的情况前,先了解下什么是乐观锁和悲观锁,下面的几篇博客已经介绍的比较详细了,我就不在赘述其原理了 [MySQL]悲观锁&乐观锁 对mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表 ...
- VUE- 访问服务器端数据 axios
VUE- 访问服务器端数据 axios 一,安装 npm install axios 二,在http.js中引入 import axios from 'axios'; 三,定义http request ...
- SQLmap自动注入工具命令(10.28 10.29 第二十八 二十九天)
SQL注入工具:明小子 啊D 萝卜头 sqlmap 等等 SQLMAP:开源的自动化诸如利用工具,支持的数据库有12中,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中他 ...
- Oracle的操作经验
采用Oracle进行sql语句 建表并设置主键,主键自增,某一字段唯一性约束等 <---如果表存在则删除---> declare num number; begin select coun ...
- spctl命令返回的结果输入到文本中
说一下我遇到的问题. mac自动打包完之后上传到苹果商店公正,公正后需要检查一下公正的结果, spctl -a -v LBCast.app #查看是否公证成功 显示如下表示公证成功了,有Notar ...
- while循环和do-while循环语句
while 语句 条件表达式的结果是一个 boolean 值,如果为true,则执行循环体:如果为 false,循环就会结束. while 循环体是一个代码块,所以 while 循环是可以嵌套其他的语 ...
- 利用 Python 破解 ZIP 或 RAR 文件密码
我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文将会利用 P ...
- 九十一、SAP中ALV事件之五,查看状态栏,工具栏和功能键等
一.我们按照说明,来到SE37功能模块,然后点击[转到]->[函数组]->[显示组] 二.按照说明输入SALV,点击勾选 三.点击主程序 四.点击主程序后,我们来到函数组页面,然后 五.我 ...
- linux命令,个人的日记本
查看所有服务 chkconfig --list service httpd status ps -aux | grep svn
- C# ------ MEF
参考 参考 MEF全称Managed Extensibility Framework, 是一个用于创建可扩展的轻型应用程序的库.开发人员可以利用MEF发现并使用扩展,但并不需要配置,而且还可以在应用程 ...