在Jsp/Servlet中的中文解決辦法 (轉)

worldblog發表於2007-08-16
在Jsp/Servlet中的中文解決辦法 (轉)[@more@]

在/中的中文解決辦法:namespace prefix = o ns = "urn:schemas--com::office" />

  的中文問題一直很讓人頭痛。也許是因為有中文有很多字符集的緣故吧。

  這裡我們先說Servlet的問題。

  眾所周知,Servlet是需要預先編譯的,就不得不談到java的編譯問題。

  Java內容是使用Unicode字符集的。所以基本上可以對大多數語言提供支援(當然,如果你會某種特殊的不常見的語言,Java就不一定支援了),所以相對來說,Java對多語言的支援相當好,甚至你可以使用中文的類名和中文的方法名,編譯執行同樣沒有問題。但是大多數的操作並不是都對Unicode提供良好的支援,至少Javac預設是使用系統自帶的字符集來進行編譯,例如:如果你的是中文,那麼你的預設字符集就是GBK;如果你使用的是日文的win2k,那麼你的預設字符集就是MS932。而Javac預設是系統的字符集進行編譯,也就是Javac中的Encoding引數預設的是使用系統的字符集。知道了這一點這個問題就容易解決了。如果你的中包含了不被當前系統預設字符集支援的字元,那麼你需要制定你的字符集來進行編譯了。不過偶爾也會有一些問題,不過這個不是java的問題了。就拿記事本來說,如果你用記事本寫程式那麼儲存程式的時候就會使用記事本預設的Ansi字元編碼方式來儲存。這種情況同樣也容易導致亂碼的產生,所以在使用的時候最好同時制定他的編碼方式。

  現在說說Jsp的問題。

這個處理起來相對簡單一些,只要你在頁頭上指定了類似to:%25@page%20language=%22java%22%20contentType=%22text/html;charset=UTF-8%22%20%25">%@page language="java" contentType="text/html;charset=UTF-8" %這樣的語句,基本上就沒有問題了。同樣需要你的IDE制定一個字元編碼,避免出現亂碼問題。

以上簡單的解決了中文亂碼的問題。不過我個人覺得這並不是一個最好的解決辦法,因為你還受到系統和IDE的字符集的限制,在實現跨平臺的時候還是容易出現問題。我要接受我比較欣賞的一種方法,也許這種方法大家現在都已經在用了。

我推薦使用Properties來儲存相應的文字資訊,這樣做有如下優點:

1.  可以很靈活的替換文字,實現多語言介面。

2.  可以根本性的避免亂碼問題

第一點我不說大家也能體會得到。重點說說第二點。

中自帶了一個nactive2acsii的命令,這個命令是把當前字元轉化成ascii字元。

當前並不是所有的作業系統都支援unicode或者其他的什麼字元編碼,但是據我所知對於ascii碼都是支援的,所以我們只要把我們的文字轉化成ascii碼就可以了。而透過nactive2acsii就可以實現這個功能了。這個程式在Java_Home/Bin下面。各位可以自己試驗一下。

  版權歸iBeyond所有,你也許可以透過得到更多資訊,和我聯絡。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-961044/,如需轉載,請註明出處,否則將追究法律責任。

相關文章