自己总结的jsp乱码干货

来源:互联网 发布:linux 检查磁盘容量 编辑:程序博客网 时间:2024/05/16 01:17

前不久,在写jsp页面程序的时候,出现了乱码的问题,于是对乱码问题,进行了一系列的研究,研究的不算深刻,但自我感觉应该能够解决大部分的jsp提交中文乱码的问题,我总结了以下的几种方法,希望对你以后的开发有帮助:

 

1、首先看看你的页面编码方式,是否有如下这句话:

<%@ page contentType="text/html;charset=utf-8"%>

如果页面中文显示乱码的话,可以将charset的内容换为不同的编码方式,如:gb2312,GBK,iso8859-1等中文编码的方式。

 

2、如果你在提交中文表单到另一个页面的时候,出现了乱码的问题,我认为出现这种情况的原因有两种

a、页面的编码方式和服务器在传递时的编码方式不一样,出现此种情况时,可以试试这句话:
<%@ page  language="java" contentType="text/html;charset=iso8859-1" pageEncoding="UTF-8"%>

在jsp页面声明中,加入pageEncoding="UTF-8"这句话。

b、找到tomcat中的server.xml文件,找到如下这段代码:

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true"
URIEncoding=”UTF-8”/>

加入pageEncoding="UTF-8"这句话。如果不加这句话,tomcat默认采用iso8859-1对提交的form表单进行编码传递。修改后需要重新启动tomcat,否则修改无效。

但一般不建议修改tomcat的编码方式,以防对其下的其它项目的编码提交方式冲突,造成其它项目乱码或者无法提交的现象出现。

 

3、如果以上方法还是出现乱码,还可以尝试改变提交表单的方式,将<form method="get">修改为:<form method="post">因为Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。

 

4、有时,用method="post"提交中文表单的时候,仍然乱码,还可以试试如下的方法:

a、在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用String str request.getParamet("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。
为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。

b、接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;

 

以上是我总结的开发jsp时,传递中文表单参数时出现乱码的问题。希望大家看后,会对你们有所帮助。

 

原创粉丝点击