论坛首页 入门技术论坛

Java Web开发(JSP、Servlet)乱码终极解决方案

浏览 13434 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-30   最后修改:2010-09-30

      千万不要看网上那些杂七杂八的解决乱码的文章,解决乱码最好的方法是(没有之一):在所有地方统一采用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 ... charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta ... charset=UTF-8">

5 - Servlet过滤器

如果项目中使用了Servlet,那么编写一个Servlet过滤器,就能避免在每一个Servlet开头都写那几行同样的语句了:

public class EncodingFilter implements Filter {

public void doFilter (request, response, chain) {
    // 设置编码格式
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    // 传递到下一个过滤器
    chain.doFilter(request, response);
  }
}

 

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位! 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

   发表时间:2010-09-30  
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?
0 请登录后投票
   发表时间:2010-09-30  
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1
0 请登录后投票
   发表时间:2010-09-30  

greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

这个想法不行。

应为如果是已经上线了部分功能的系统 你不可能再修改了 这样会印象到其他的功能 而且如果是后进项目,该别人的东西很不现实
0 请登录后投票
   发表时间:2010-09-30  
还差一些东西,比如页面的编码,以及编译器在编译的时候显示指定编码,乱码无处不在,很难说有啥终极的解决方案
0 请登录后投票
   发表时间:2010-09-30  
xiangkun 写道
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1


是的,我就是这样修改的,上次一口气修改了三四十个jsp,呵呵,只要坚持,2个星期搞定没有问题

还有一点,如果设置了tomcat的server.xml中的uriEncoding就一切OK

老实说只要页面和uriEncoding一致,就完全OK了,good luck
0 请登录后投票
   发表时间:2010-09-30  
xiangkun 写道
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1

+1
0 请登录后投票
   发表时间:2010-10-01  
这个问题挺复杂的,utf-8网页中不允许有中文的吧
0 请登录后投票
   发表时间:2010-10-01  
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人
0 请登录后投票
   发表时间:2010-10-01  
qiren83 写道
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人

+1
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics