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!,你再也不用編寫煩人的編碼轉換了。
原文轉自:http://www.anti-gravitydesign.com