Web开发中的乱码问题

Web开发中的乱码问题

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

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

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


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

一、JSP显示页面中文乱码

JSP页面显示中的中文乱码主要是HTML代码中的中文乱码和JSP代码中动态输出的中文乱码。例如如下代码若显示乱码:

<%@ page language="java" import="java.util.*"  %>  

<html>   

<head>   

<title>HTML代码中的中文显示</title>

</head>   

<body>  

   Jsp显示页面中文字符乱码测试! 

    <% String jspOput= "JSP中动态输出的中文显示"; out.print(jspOput);   %>  

    </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-8connectionTimeout="20000" 

redirectPort="8443" />向程序指明编码类型,重启Tomcat后服务器可以得到正确的页面,中文乱码问题得到解决。


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

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

此处有两种可选的处理方法:

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

//获取表单数据

String name= request.getParameter("name");  

//进行转码

name  =new String(name.getBytes("ISO-8859-1"), "utf-8"));  

先从"ISO-8859-1"格式的字符串中取出字节内容,然后在用"utf-8"的编码格式重新构造一个新的字符串。经过这样的转换编码以后,所有的中文输入都可以用request对象正常取出。

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

//设置解码方式

request.setCharacterEncoding("utf-8")

//获取表单数据

String name = request.getParameter("name");  


四、JSP源文件中文乱码

1)MyEclipse中默认的JSP编码格式为"ISO-8859-1",当打开通过其他编辑器编辑的JSP文件时会出现乱码, 此时我们只需要修改MyEclipse中对JSP的默认编码就可以了

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

 

2)在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文件,中文乱码即可恢复正常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值