`
youanyyou
  • 浏览: 197088 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

阅读更多

      千万不要看网上那些杂七杂八的解决乱码的文章,解决乱码最好的方法是(没有之一):在所有地方统一采用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 提供的广告

分享到:
评论
40 楼 newvirus 2010-10-12  
写个辅助过滤器就OK了
39 楼 andyneo 2010-10-11  
开始以为真的是终极解决办法,但是看来后来的点评才发现.....不过也很感谢lz提供了一种解决问题的办法 
38 楼 jkls 2010-10-09  
joknm 写道
skzr.org 写道
xiangkun 写道
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1


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

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

老实说只要页面和uriEncoding一致,就完全OK了,good luck



这位仁兄太牛了。

在我痛苦的记忆中是这样子的:
程序是十几二十个人搞过文件更新修改,不同的人有不同的servlet,不同的servlet有不同的编码,servlet又对应有不同的html,这些文件不能用数十计算,只能用数百计算,仁兄,你杯具了吧。
可能全改编码还不是杯具的,更杯具的是你修改不同的servlet的时候要切换不同的编码,稍有懈怠,杯具就出来了,一半正常一半乱码。

+1   
37 楼 joknm 2010-10-08  
skzr.org 写道
xiangkun 写道
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1


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

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

老实说只要页面和uriEncoding一致,就完全OK了,good luck



这位仁兄太牛了。

在我痛苦的记忆中是这样子的:
程序是十几二十个人搞过文件更新修改,不同的人有不同的servlet,不同的servlet有不同的编码,servlet又对应有不同的html,这些文件不能用数十计算,只能用数百计算,仁兄,你杯具了吧。
可能全改编码还不是杯具的,更杯具的是你修改不同的servlet的时候要切换不同的编码,稍有懈怠,杯具就出来了,一半正常一半乱码。
36 楼 gwpking8419 2010-10-08  
这也叫终极?如果是其它的web容器,你改呀
35 楼 给太阳洒水 2010-10-07  
一个杯具引发了另一场杯具,UTF-8都不允许中文了!!!!!
楼主的这篇文章起到了负面效果,让新人一看,按照你的方法做了,是,问题是解决了,那以后遇到不允许你修改情况的咋办呢。就算让你改,一般的项目,几百个JSP页面少不了吧,就专门来改JSP页面,岂不是要花费几个人日的工作了。
34 楼 faming521 2010-10-07  
beeke 写道
遇见过的一个最复杂的乱码问题:

A系统是C写的,定时发送一个消息给MQ
B系统是Java基于weblogic的老系统,两边都不是utf-8编码
两个系统分属于两个公司,谁也不鸟谁
MQ是由第三家公司安装维护的,两边都不鸟

一个字符集问题跨越了三个系统和三家公司,彻底杯具了


有点复杂!!
33 楼 jordan_micle 2010-10-07  
开发中文的东东,编码永远是个纠结的主
32 楼 zhoyan 2010-10-07  
qiren83 写道
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人

严重同意
31 楼 xzuse 2010-10-07  
gundumw100 写道
如果能全部都是UTF-8的话,还要这篇文章干嘛?

就是
30 楼 不复记忆 2010-10-06  
哎哟,我的NB死活都有乱码,无语了都...
29 楼 笑我痴狂 2010-10-06  
kidd3166 写道
qiren83 写道
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人

+1


+1
28 楼 terryang 2010-10-06  
标题党。擦。
27 楼 sjavaboy 2010-10-05  
现在刚接手一个老的项目, 原来是gbk的, 我要改成UTF8的, 我在eclipse里面用替换的功能把jsp和html的指定的编码直接替换成utf-8了,没有问题, js文件直接改eclipse里面的编码就可以了, css文件要加一个@charset utf8, 和java文件我都是写程序来转编码的, 其中发现一个文件可能有多个编码, 我用了火狐的一个插件可以检查文件的编码信息, 把多种的编码自动手转了, 也不多。 改完了,项目运行没有乱码。
26 楼 坏孩子 2010-10-05  
编码问题纯粹是tomcat自己没弄好,urlencoding以后的都是utf8编码,没有encoding的如果项目的gbk的那就是gbk了,这样还不好处理?判断url是不是编码了最简单的方法用java的URLDecoder反编码一下比较一下长度就可以了,没关注过效率,不过我用这个方法改过tomcat,试了公司很多项目,没有发现问题
25 楼 wtj6891 2010-10-05  
<div class="quote_title">kidd3166 写道</div>
<div class="quote_div">
<div class="quote_title">qiren83 写道</div>
<div class="quote_div">
<div class="quote_title">相忘江湖 写道</div>
<div class="quote_div">这个问题挺复杂的,utf-8网页中不允许有中文的吧</div>
<br>强人 <br>
</div>
<br>+1</div>
<p> </p>
<p> 那是相当的强!</p>
24 楼 chrislee1982 2010-10-04  
selvenfx2009 写道
xiangkun 写道
greatghoul 写道
想法倒是很好,可是如果你拿到一个已经没有统一采用编码的工程,你怎么办,一个个改?

+1

+1

搞个filter不就可以了吗?!!
23 楼 chrislee1982 2010-10-04  
ecokozhangtao 写道
qiren83 写道
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人

+1

真的不是一般的强!
22 楼 bepatient 2010-10-03  
这个办法不就是网上流传得最多的吗?很多特殊情况,很多乱码还是无法解决。例如,form中用post提交的时候,你的那个过滤器应该是不起作用的。还要重新编码!
21 楼 ecokozhangtao 2010-10-02  
qiren83 写道
相忘江湖 写道
这个问题挺复杂的,utf-8网页中不允许有中文的吧

强人

+1

相关推荐

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

    通过上述步骤,我们可以在Java Web开发中(使用JSP和Servlet)彻底解决乱码问题,确保数据从输入到输出的整个过程中都使用一致的UTF-8编码。这不仅提高了数据处理的准确性,也提升了用户体验,特别是在涉及多语言...

    Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax

    Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax

    Java Web开发技术Servlet与JSP

    Java Web开发技术Servlet与JSP

    零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar

    本资源"零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar"提供了一套完整的入门教材,涵盖了从基础到进阶的关键知识点。 首先,我们从基础开始,讲解【HTML相关技术基础知识】。HTML...

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    java web教程(servlet,jsp,jdbc)java高手真经

    Java Web教程涵盖了三个核心组成部分:Servlet、JSP(JavaServer Pages)和JDBC(Java Database Connectivity)。这三者是构建动态、数据驱动的Web应用程序的基础,对于任何希望在Java平台上进行Web开发的人来说,都...

    Java.Web开发JSP.Servlet.Struts.Spring.Hibernate.Ajax.rar

    本压缩包"Java.Web开发JSP Servlet Struts Spring Hibernate Ajax.rar"显然包含了几个关键的Java Web开发技术,包括JSP(JavaServer Pages)、Servlet、Struts、Spring、Hibernate以及Ajax。以下是对这些技术的详细...

    JSP乱码 N种解决方案

    在开发Java Web应用程序时,JSP(JavaServer Pages)页面经常遇到字符编码问题,导致页面显示乱码。本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码...

    Servlet+jsp Java Web开发

    在Java Web开发中,Servlet和JSP是两个关键的技术组件,它们被广泛用于构建动态、交互式的Web应用程序。本项目以"Servlet+jsp Java Web开发"为主题,采用经典的开发环境:MySQL数据库、Tomcat 6应用服务器、Eclipse...

    jsp中文乱码的解决方案

    在开发基于Java的Web应用程序时,JSP(Java Server Pages)页面常常会遇到中文乱码的问题。这通常发生在数据的输入、处理或输出阶段,给用户界面带来不便,也增加了开发者的调试难度。本文将深入探讨JSP中文乱码的...

    JAVA WEB大作业 JSP+SERVLET+JAVABEAN模式开发

    【JAVA WEB大作业 JSP+SERVLET+JAVABEAN模式开发】是一个典型的Java Web应用程序开发项目,它涉及到Web开发中的三个关键组件:JSP(JavaServer Pages)、Servlet和JavaBean。这个项目的目的是让学生熟悉这些技术的...

    基于jsp+servlet+javabean的java web开发

    在Java Web开发中,"基于jsp+servlet+javabean"的模式是一种常见的架构,用于构建动态、数据驱动的Web应用程序。这个小练习可能是一个汽车店系统的车辆预约管理应用,让我们详细了解一下这些技术及其在Web开发中的...

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...

    java web开发解决乱码问题

    ### Java Web 开发中解决乱码问题的全面指南 #### 一、乱码问题概述 在Java Web开发过程中,乱码问题是开发者经常会遇到的问题之一。它通常发生在处理含有中文或其他非ASCII字符的数据时。本篇文章将详细介绍在...

    java web项目 servlet+jsp实现的网上在线报名系统.zip

    java web项目 servlet+jsp实现的网上在线报名系统 java web项目 servlet+jsp实现的网上在线报名系统 java web项目 servlet+jsp实现的网上在线报名系统 java web项目 servlet+jsp实现的网上在线报名系统 java web项目...

    《Java Web开发基础——从Servlet到JSP》源代码v1.0

    《Java Web开发基础——从Servlet到JSP》是一本深入探讨Java Web开发的教程,主要涵盖了从基础的Servlet到高级的JSP技术。这个压缩包包含的源代码是该书教学内容的实践部分,旨在帮助读者更好地理解和应用所学知识。...

    java Web开发乱码解决方案

    ### Java Web 开发中的中文乱码问题及其解决方案 在Java Web开发过程中,中文乱码问题是一种常见的技术难题,尤其在处理客户端与服务器间的数据交互时更为突出。本文将详细介绍Java Web开发中出现乱码的原因,并...

Global site tag (gtag.js) - Google Analytics