tomcat 3.23以下的版本
对于tomcat 3.23以下版本,java中的中文问题网上已经谈了不少,一般遇到中文问题使用转换函数转换.tochinese()
public static string tochinese(string strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new string(strvalue.getbytes("iso8859_1"), "gbk");
return strvalue;
}
}catch(exception e){
return null;
}
}
凡是涉及中文字符串,如从数据库中读取中文字符串,或变量名赋值时,使用tochinese函数:
tochinese("这是中文字符串")
注:该办法在使用javamail发送中文信息时似乎有问题
tomcat 4.0以上的版本
在4.0以后的版本,已经不需要象3.23版本中使用字符转换函数:
(1)编译javabean时 javac 命令行加上-encoding iso8859_1
(2)在jsp头部中加入<%@ page contenttype="text/html;charset=iso8859_1" %>
是不是很简单? 使用本办法基本可以对付实际应用,推荐!
但也有一个缺点是,通过form表单get参数;或在url后附带中文,这个办法就失效,我相信应该有办法解决.
该办法原理就是在java的各个环节统一编码为:iso8859_1.
修改tomcat
该办法是一位网友在论坛贴出的,我没有试验,转载于此:
只要修改一个地方就行了,文件为:
tomcat4/src/catalina/src/share/org/apache/catalina/connector/httpreque
stbase.java
找到protected void parseparameters()方法,把
if (encoding == null)
encoding = "iso-8859-1";
改为
if (encoding == null)
encoding = "gbk";
编译:
解开jakarta-servletapi-4的原码包,找到servlet.jar文件设置到classpath
找到tomcat4.0.1的bin包将catalina.jar设置到classpath.
因为编译时要使用这些api.
然后javac httprequestbase.java生成两个class文件.
解开catalina.jar jar xvf catalina.jar(tomcat bin包中的)
覆盖调原来的两个class文件:
jar cvf catalina.jar org
即可
重启tomcat4,一切ok!,你再也不用编写烦人的编码转换了。
闽公网安备 35060202000074号