Tomcat中Java/jsp中文問題完全解決方案

發表于:2007-05-25來源:作者:點擊數: 標簽:Tomcatjava問題Jsp中文
Tomcat 3.23以下的版本 對于Tomcat 3.23以下版本, Java 中的中文問題網上已經談了不少,一般遇到中文問題使用轉換函數轉換.toChinese() public static String toChinese(String strvalue) { try{ if(strvalue==null) return null; else { strvalue = new Stri

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!,你再也不用編寫煩人的編碼轉換了。

 

注:該方法只適合Tomcat 4版本,根本java解決之道是統一編碼為UTF-8

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97