1. 程式人生 > >tomcat配置及中文亂碼問題的解決方案

tomcat配置及中文亂碼問題的解決方案

本文要解決的問題:

掌握tomcat的配置,同時解決使用過程中一系列的亂碼問題。

tomcat中文亂碼問題

一、Java中文問題的由來

  Java的核心和class檔案是基於unicode的,這使Java程式具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP檔案本身編譯時產生的亂碼問題和Java程式於其他媒介互動產生的亂碼問題。

  首先Java(包括JSP)原始檔中很可能包含有中文,而Java和JSP原始檔的儲存方式是基於位元組流的,如果Java和JSP編譯成class檔案過程中,使用的編碼方式與原始檔的編碼不一致,就會出現亂碼。基於這種亂碼,建議在Java檔案中儘量不要寫中文(註釋部分不參與編譯,寫中文沒關係),如果必須寫的話,儘量手動帶引數-ecoding GBK或-ecoding gb2312或-ecoding UTF-8編譯;對於JSP,在檔案頭加上<%@ page contentType="text/html;charset=UTF-8"%>或

<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解決這類亂碼問題。

  本節要重點討論的是第二類亂碼,即Java程式與其他儲存媒介互動時產生的亂碼。很多儲存媒介,如資料庫,檔案,流等的儲存方式都是基於位元組流的,Java程式與這些媒介互動時就會發生字元(char)與位元組(byte)之間的轉換,例如從頁面提交表單中提交的資料在Java程式裡顯示亂碼等情況。

  如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。

二、解決方法

  對於流行的Tomcat來說,有以下兩種解決方法:

  1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為“簡體中文”:

  方法是找到 server.xml 中的

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"

 />

  標記,粗體字是我新增的。

  b)更改 Java 程式,我的程式是這樣的:

public class ThreeParams extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
     response.setContentType("text/html; charset=UTF-8");
      ...
  }  
}

  粗體字是必需要有的,它的作用是讓瀏覽器把Unicode字元轉換為UTF-8。這樣頁面的內容和瀏覽器的顯示模式都設成了UTF-8,就不會亂碼了。

tomcat的環境配置

1、Tomcat 7.0 (請到官網下載)的免安裝版的配置(假如將Tomcat 解壓到D:\Program Files目錄,目錄結構為:D:\Program Files\apache-tomcat-7.0.11


1、新增環境變數:在 我的電腦->屬性->高階->環境變數


2、新建系統變數,變數名:CATALINA_HOME 變數值:D:\Program Files\apache-tomcat-7.0.11 (Tomcat 解壓到的目錄)。


3、在系統變數 Path的最後面新增%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar;%CATALINA_HOME%\lib\jsp-api.jar 注意它們之間的分號,一定是英文的分號。


4、Tomcat 7.0的管理員的配置,進入D:\Program Files\apache-tomcat-7.0.11(Tomcat目錄)下的conf目錄,編輯tomcat-users.xml,找到最後的:


<!-- 
<role rolename="tomcat"/> 
<role rolename="role1"/> 
<user username="tomcat" password="tomcat" roles="tomcat"/> 
<user username="both" password="tomcat" roles="tomcat,role1"/> 
<user username="role1" password="tomcat" roles="role1"/> 
--> 


在上面這段後面 新增上: 


<role rolename="manager-gui"/> 
<role rolename="admin-gui"/> 
<user username="admin" password="veryhuocom" roles="admin-gui"/> 
<user username="tomcat" password="veryhuocom" roles="manager-gui"/>


到這應該知道我們新增的管理員的使用者名稱和密碼是多少了吧!


5、進入Tomcat 目錄下的bin目錄,雙擊startup.bat 啟動Tomcat 在命令列視窗會出來英文提示。


6、瀏覽器輸入:http://localhost:8080 可以看到Tomcat的歡迎頁面就說明配置成功了,點選右上角上manager連線,輸入上面配置的使用者名稱和密碼,就可以進入管理頁面。