博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP、Servlet乱码终极解决方案
阅读量:5265 次
发布时间:2019-06-14

本文共 1801 字,大约阅读时间需要 6 分钟。

千万不要看网上那些杂七杂八的解决乱码的文章,解决乱码最好的方法是(没有之一):在所有地方统一采用UTF-8编码。

这其中包括:

1 - 工程

如果使用的是Eclipse,那么打开Preference,搜索encoding,把所有能改的地方都改成UTF-8,这就确保了源文件的编码。

如果使用的是NetBeans,不用设置,因为NetBeans默认就是UTF-8。

2 - 数据库

例如MySQL,加上启动参数--character-set-server=utf8,这样以后创建的所有数据库都是UTF-8编码,这样就不需要一个一个数据库改了。注意选择MySQL管理工具的时候要选择支持UTF-8的,不过貌似不支持的很少。

3 - Web服务器

例如Tomcat 6,在<Service name="Catalina">中的<Connector>中加上URIEncoding="utf-8",确保URL的编码格式为UTF-8。

4 - JSP页面

开头要这样写:

<%@ page contentType="text/html" pageEncoding="UTF-8"%>(有了pageEncoding="UTF-8",charset="UTF-8"就无用了,pageEncoding优先级更高)

<%request.setCharacterEncoding("UTF-8");%>

5 - Servlet

servlet的doGet或doPost方法开始处加入如下代码:
request.setCharacterEncoding("utf-8")
 response.setCharacterEncoding("utf-8");

6- Servlet过滤器

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。

避免在每一个JSP和Servlet开头都写request.setCharacterEncoding("UTF-8"),response.setCharacterEncoding("UTF-8");

public class SetCharacterEncodingFilter implements Filter {	protected String encoding = null;	public void destroy() {		this.encoding = null;	}	public void init(FilterConfig filterConfig) throws ServletException	{		this.encoding = filterConfig.getInitParameter("encoding");	}	public void doFilter(ServletRequest request, ServletResponse response,			FilterChain chain) throws IOException, ServletException	{		request.setCharacterEncoding(encoding);		response.setCharacterEncoding(encoding);		chain.doFilter(request, response);	}}

web.xml中配置过滤

SetCharacterEncodingFilter
cn.iem.hl.filter.SetCharacterEncodingFilter
encoding
utf-8
SetCharacterEncodingFilter
/*

转载于:https://www.cnblogs.com/java0721/archive/2012/05/30/2602989.html

你可能感兴趣的文章
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
java实现哈弗曼树
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
python常用模块之sys, os, random
查看>>
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>