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

發表于:2007-06-22來源:作者:點擊數: 標簽:
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!,你再也不用編寫煩人的編碼轉換了。

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

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