`

JSP中文乱码问题终极解决方案

 
阅读更多

在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码、参数乱码、表单乱码、源文件乱码。下面来逐一解决其中的乱码问题。

一、JSP页面中文乱码

JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。

先看一个JSP程序:


上面这个JSP程序看起来好像是在页面显示几句中文而且标题也是中文。运行后在浏览器中显示如图所示

原因在于没有在JSP中指定页面显示的编码,消除乱码的解决方案很简单上面代码中page命令修改成如下所示即可


再次运行乱码消失,原理就是向页面指定编码为GB2312,那么页面就会按照此编码来显示,于是乱码消失。

二、URL传递参数中文乱码

一般情况下在使用get方法提交表单的时候传递的参数如果是中文的话很可能会出现乱码。

下面是一个示例程序


上面这个JSP程序的功能就是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,这个程序的运行效果如下图

对于URL传递中文参数乱码这个问题,其处理方法比较特殊,仅仅转换这个中文字符串或者设置JSP页面显示编码都是不能解决问题的,需要修改Tomcat服务器的配置文件才能解决问题。在这里修改Tomcatconf目录下的server.xml配置文件,具体改后的代码如下


在原来代码中添加URI编码设置URIEncoding=gb2312”即可,重启Tomcat服务器可以得到正确的页面。其原理也和上面的情况类似,就是向程序指明编码类型,然后显示就正常了。

三、表单提交中文乱码

对于表单的数据可以使用request.getParameter(“”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。

示例代码如下


在上面的表单当中想AcceptFormCharset这个页面提价两项数据,下面是AcceptFormCharset.jsp的内容:


在上面的程序中,如果表单输入没有中文,则可以正常的显示当输入的数据中有中文的时候,得到的结果如图所示。

产生种结果的原因是Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。对于这个问题可以采用转换编码格式的方法来解决,现在对AcceptFromCharset这个页面改动如下:


经过这样的转换编码以后,所有的中文输入都可以用request对象正常取出。在上面这个程序中,第四行和第五行是转换编码格式的关键,先从ISO-8859-1格式的字符串中取出字节内容,然后在用GB2312的编码格式重新构造一个新的字符串。这样就可以支持中文变淡输入的正常取值和显示。改进以后程序运行结果如下

经过上面的更改编码格式的处理,表单的中文输入乱码问题已经得到解决。但是如果上面的表单中的输入项不止是两个,那么每个输入项都需要进行编码转换,那样就很麻烦了。这是我们就用到了大名鼎鼎的过滤器filter了。关于这里的内容大致的思虑和上面的一样具体做法请参照笔者的另一篇文章

四、EclipseJSP文件中文乱码

Eclipse或者MyEclipse中由于默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP文件时会出现乱码,如图所示

对于这个问题我们只需要更改一下Eclipse或者是MyEclipse中对JSP的默认编码就可以了,修改的地方(我的MyEclipse版本为11)如图所示

PS

Eclipse或者MyEclipse当中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存,例如如下代码


修改后在保存的时候会提示如下:

现这个提示的原因在于JSP源文件中有ISO=8859-1编码无法识别的中文字符,对于这个问题,解决办法就是在JSP页面中声明页面编码格式即可。声明后代码如下:


其中第一行中pageEncoding=gb2312”指明了JSP页面编码采用GB2312,这样就可以正常保存JSP的源文件了。


遇到问题首先分析问题出现的原因,只有知道了原因才能去解决,学习分析问题的来源远比解决这个问题重要的多。

乱码问题的原因就是程序(Eclipse也好,浏览器也罢)的编码没有和编程人员的编码进行统一,(就像你和一个不懂中文的人用中文交流他当然不懂了)那么解决这个问题只需要将编程人员想要的编码告诉程序就可以了,以上解决乱码问题的种种方法都可以说是一种声明编码的过程,也就是说乱码问题终极解决方案就是:转码。这里的转码要么是编程人员手动转,要么就是声明一下让程序去转,换句话说就是:和不懂中文的交流,要么让他学中文,要么你就去学习他的语言。

生活就是编程,编程就是生活,同之,通之!!!

分享到:
评论

相关推荐

    乱码问题终极解决方案

    本篇文章将针对"乱码问题终极解决方案"这个主题,深入探讨在Java、JSP和Ajax中如何有效地预防和解决乱码问题。 首先,我们要理解乱码产生的原因。乱码通常是因为字符编码不一致导致的,比如文件编码、程序内部编码...

    JavaWeb乱码问题终极解决方案.docx

    JavaWeb 乱码问题终极解决方案 下面是从给定的文件中生成的相关知识点: 一、确认乱码发生的位置 在解决 JavaWeb 乱码问题时,首先要确认乱码的地方。出现乱码可能是浏览器显示问题,也可能是 Java 编码问题,也...

    jsp,java中文乱码问题另类解决方案,jni加密、解密编码

    本篇文章将深入探讨这个问题,并提出一种另类的解决方案——利用JNI(Java Native Interface)进行加密和解密操作来规避乱码问题。 首先,我们需要理解为什么会出现中文乱码。这通常与字符编码有关,Java和JSP默认...

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

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

    eclipse下properties文件中文乱码的解决方案

    面对Eclipse下Properties文件中文乱码的问题,开发者有多种解决方案可以选择。通过调整Eclipse的默认编码、使用`native2ascii`工具,或是安装PropertiesEditor插件,都能有效地解决乱码问题,提高代码质量和开发效率...

    JSP存到数据库乱码解决办法

    解决方案:配置CharacterEncodingFilter Spring框架提供了一个非常实用的过滤器——`CharacterEncodingFilter`,它可以帮助我们解决上述问题。下面详细介绍如何在项目的`web.xml`文件中配置此过滤器。 ##### 2.1 ...

    JSP乱码问题相关的一些集锦

    本文将针对JSP乱码问题进行深入探讨,并提供一系列有效的解决方案。 #### 一、理解乱码产生的原因 在探讨解决方案之前,我们先来了解一下为什么会出现乱码。通常情况下,乱码的产生是由于编码格式不一致导致的。...

    Struts2乱码终极解决办法

    ### Struts2乱码终极解决办法 #### 一、引言 在开发基于Struts2框架的应用时,经常遇到的一个问题就是中文乱码。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何彻底解决Struts2中的乱码问题,并...

    java中文乱码终极处理方案.docx

    Java中文乱码问题一直是开发者们面临的一大挑战,无论是早期的JSP、STRUTS,还是现在的AJAX,乱码问题始终困扰着程序员。不过,实际上,很多问题的根源并不在于编程语言或框架本身,而是对编码和文件处理的误解。...

    JSP乱码解决

    ### JSP乱码解决方案:Apache配置详解 在Web开发中,尤其是使用Java Server Pages (JSP)进行网页设计时,中文乱码问题时常困扰开发者。本文将深入探讨如何通过配置Apache服务器来解决这一常见问题,确保中文字符在...

    JSP乱码终极攻略和AJAX初步运用

    总的来说,解决JSP乱码问题和正确使用AJAX传递中文参数,关键在于理解编码和解码的过程,以及在不同环境下的适应性调整。通过适当的过滤器配置、参数转换和统一的编码标准,可以有效地防止和解决这些问题。在实际...

    中文乱码问题解决.pdf

    最终,通过重新应用方法1,开发者找到了解决方案。在实际的代码实现中,JSP页面应当设置正确的编码,并在获取请求参数后,使用ISO-8859-1转UTF-8的方法处理字符串。 在实际开发中,解决乱码问题不仅需要理解字符...

    乱码问题解决

    ### 乱码问题解决方案 #### 一、charset与pageEncoding的区别及应用场景 在Web开发过程中,尤其是使用JSP技术时,经常会遇到字符编码的问题。本文将深入探讨`charset`与`pageEncoding`的区别,并结合MySQL数据库...

    struts中文问题,struts国际化问题——终极解决方案

    ### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...

    linux下mysql乱码问题的解决方案

    项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql数据库,最终返回到客户端的中文出现乱码问题。 在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,...

    javascript通过url向jsp页面传递中文参数导致乱码解决方案

    通过上述步骤,我们就可以有效地解决在使用URL向JSP页面传递中文参数时遇到的乱码问题。实际开发中,应该注意每次编码和解码的字符集必须保持一致,否则可能造成解码错误或乱码问题。同时,开发者在编写代码时还应该...

    Tomcat乱码问题

    ### Tomcat乱码问题及其终极解决方案 在使用Tomcat服务器部署Web应用时,字符编码问题时常困扰着开发者,尤其是在处理中文或特殊字符时,页面显示出现乱码是常见的现象。本文将深入探讨Tomcat乱码问题的原因,并...

    jspsmartupload中文终极版

    这一版本经过全面测试,证明其功能完善,性能稳定,为开发人员提供了强大的文件上传下载解决方案。 在Web开发中,文件上传和下载是常见的需求,尤其是对于包含中文字符的文件名,由于编码问题,常常会出现乱码或...

Global site tag (gtag.js) - Google Analytics