中文乱码一直是困扰我们的一个很大的问题,也是很多开发人员希望解决的问题。 本系列文章中采用的环境为Tomcat5.0 + JDK1.5 +mysql5.0。统一编码为UTF-8
本篇主要是解决jsp页面之间的post和get方法中出现的乱码问题,不涉及struts等框架。
(一)
tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
我们现在新建2个页面,在eclipse IDE中,eclipse对jsp文件的默认编码iso-8859-1,可以通过设置调整为UTF-8。
打开window-> preferences,如下图所示:
将用红线框出来的select选择utf8的。
新建的2个页面分别为login.jsp和result.jsp;login.jsp提交一个name给result.jsp,result.jsp负责显示就行。
login.jsp的页面如下图所示(采用post提交):
result.jsp的处理代码如下:
将标记1行和标记2行都去掉的话在页面上就会出现中文乱码,标记1和标记2保留一个就可以解决这个问题。
(二)get方式的解决办法
对于form表单采用get方法提交,我们可以采用以下的转换来正常显示中文
name = new String(name.getBytes("iso8859_1"),"UTF-8");
但是如果对于http://localhost:8000/test/result.jsp?name=中文这种提交,上面的方法就没有效果了。
对于后者,我们的解决方案是:将Tomcat 5.0\conf目录下的server.xml文件中的
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified
during installation -->
<Connector
port="8000" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" />
后面添加了URIEncoding="UTF-8"
这样我们就解决了get方式的乱码问题。