中文乱码问题解决方案汇总

中文乱码问题解决方案汇总

    中文乱码问题常见的主要是JSP中文乱码、Java源文件中文乱码和CSS源文件中文乱码。其
中JSP中文乱码包括如下几个方面:显示页面乱码、参数乱码、表单乱码和源文件乱码。

    首先我们得知道出现种种乱码的原因:最直接的描述就是“编码不一致”,即是说程序的
编码与编程人员的编码不统一。

    接下来再来了解解决办法:既然问题出在编码不统一,那么我们就要对编码进行相应
的“转码”操作。可以是我们开发人员自己手动进行转码,也可以做出声明让程序去进行转
码。

下面我们来来逐个分析解决各种中文乱码的问题。

一、JSP显示页面中文乱码

    JSP页面显示中文乱码主要是HTML中的中文乱码和JSP中动态输出的中文乱码。例如如下代
码若显示乱码:
    <%@ page language="java" import="java.util.*"  %> 
    <html>  
    <head>  
        <title>HTML中文显示</title>
    </head>  
    <body> 
        JSP显示页面中文显示示例: 
        <% String str = "JSP中动态输出中文显示"; out.print(str);   %> 
    </body> 
    </html> 

    这是因为在JSP中没有指定页面显示的编码,出现这种乱码问题我们在页面的首部在添加
一条如下所示的page包引用语句:

<%@ page  contentType="text/html; charset=utf-8"   %> 向页面指定编码为utf-8,让页
面按照此编码来显示,就能解决如上的乱码问题 。

二、参数中文乱码(表单get提交方式URL传递参数乱码)

    使用表单的get提交方式传递的参数存在中文很可能会出现乱码,然而解决这种情况下的
中文乱码的方法比较特殊,转换这个中文字符串或者设置JSP页面显示的编码等都不能解决此
类乱码问题。我们需要修改Tomcat服务器的配置文件才能奏效:打开Tomcat的安装目录中conf
目录下的server.xml配置文件,找到如下所示代码段:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 

    然后在上述代码段中添加URI的编码设置URIEncoding=“utf-8”,如下所示:<Connector port="8080" protocol="HTTP/1.1" URIEncoding=“utf-8”connectionTimeout="20000" redirectPort="8443" />向程序指名编码类型,重启Tomcat后服务器可以得到正确的页面,中文乱码问题得到解决。

三、表单中文乱码(post方式提交)

    使用request.getParameter(“”)的方法获取表单数据时,如果表单中存在中文数据就
可能会出现乱码。这是因为Tomcat中对于post方法提交的表单采用的默认编码为“ISO-8859-
1”,而这种编码格式不支持中文字符。这时候我们就需要转换编码格式了。

此处有两种可选的处理方法:
    1)当表单的输入项只有一两个时:在使用request对象的getParameter方法获取表单提交
的数据之后进行转码。例如:

    //获取表单数据
    String userName = request.getParameter("userName"); 
    //进行转码
     userName  = new String(userName.getBytes("ISO-8859-1"), "utf-8"));
 
    先从ISO-8859-1格式的字符串中取出字节内容,然后在用utf-8的编码格式重新构造一个新的字符串。经过这样的转换编码以后,所有的中文输入都可以用request对象正常取出。

    2)当表单的输入项不止两个时:逐个转码就显得比较麻烦了,此时就需要用到过滤器。此时我们可以使用过滤器filter或者使用request对象的getParameter方法获取表单提交的数据之前先设置解码方式。;例如:

    //设置解码方式
    request.setCharacterEncoding(“utf-8”)
    //获取表单数据
    String userName = request.getParameter("userName"); 

四、MyEclipse中JSP源文件中文乱码

    1)MyEclipse中默认的JSP编码格式为ISO-8859-1,当打开由其他编辑器(如文本文档)
编辑的JSP文件时会出现乱码, 此时我们只需要修改Eclipse或者是MyEclipse中对JSP的默认
编码就可以了


    MyEclipse的菜单栏中点击“window”preferencesGeneralContent TypesText选中“JSP”如下图所示修改默认编码为“utf-8”

中文乱码问题解决方案汇总


    2)在Eclipse或者MyEclipse当中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存,并且点击保存时会弹出如下所示提示:

中文乱码问题解决方案汇总


    这是因为在JSP源文件中有ISO=8859-1编码无法识别的中文字符,此时我们需要在JSP页面
中声明页面编码格式:

   
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>

   
    其中pageEncoding=“utf-8”指明了JSP页面编码采用utf-8,这样就可以正常保存JSP的
源文件了。


五、Java源文件中文乱码


    我们经常需要在MyEclipse中进行导入项目文件的操作,但是往往导入的项目中的Java源
文件中含有中文时,都将显示为乱码,这是因为导入的项目的编码方式与我们设定好的
MyEclipse的编码方式不一致,此时我们就需要修改导入的项目的编码方式让中文字符正常显
示。


    选中导入的项目名称右击选中“preferences”ResourceText file encoding选
中“Other”,然后选择“UTF-8”(与MyEclipse设置的编码格式一致)保存刷新整个项
目,Java源文件中的中文乱码即可恢复正常。


六、CSS源文件中文乱码

    如上所述,我们修改了项目的编码格式之后,Java源文件的中文乱码问题得到解决了,但
是当我们打开CSS文件时却能往往能再次碰到中文显示乱码的问题,这是因为整个项目的编码
格式修改的和MyEclipse设置的编码格式一致了,而CSS文件却还是保存着以前的编码格式,同
样地,此时我们就需要再来修改CSS文件夹或者某个指定的CSS文件的编码格式了:选中CSS文
件夹或者某个CSS文件右击选中“preferences”ResourceText file encoding选
中“Other”,然后选择“UTF-8”(与MyEclipse设置的编码格式一致)保存刷新CSS文
件,中文乱码即可恢复正常。

你可能感兴趣的:(java,编程,jsp,css,中文乱码)