|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-11-02, 06:03 PM | #1 (permalink) |
榮譽會員
|
Java中文化的處理(總結)
(原創)Java中文化的處理(總結)
目標是2點:1、程序能正確顯示(輸出)中文(或者其他任何地方的文字) 2、程序能正確得到(輸入)中文(或者其他任何地方的文字)。 相關的環境有:操作系統的支持,資料庫的支持,編譯器的支持,執行器的支持,程序的支持。 操作系統、資料庫不再考慮了,應該自己設定正確。編譯器就是Javac,國際化的支持,還是不錯的,也不再考慮。執行器就是Java或者app server,一般不再考慮,但有些app server,還是指定file.encoding比較好。程序就是自己寫的程序,當然是要處理的部分。 java對國際化的支持,是不錯的,那麼它是怎麼做到的呢?具我的瞭解,它是判斷了操作系統的local內容。所以,類似的,自己寫的程序,也這麼做,效果最好。 application比較簡單,不用多說什麼,把要輸出文字做成一個一個語言包,程序取的時候,隨便指定上encoding,就OK了。 web上的複雜一點。但是一樣的道理,貼一段程序,大家都明白了 程式碼:-------------------------------------------------------------------------------- String clientLanguage = request.getHeader("Accept-Language"); if ("zh-CN".equals(clientLanguage)) { request.setCharacterEncoding("GBK"); response.setContentType("text/html; charset=GBK"); } else if ("zh-TW".equals(clientLanguage)) { request.setCharacterEncoding("BIG5"); response.setContentType("text/html; charset=BIG5"); } else if ("ja".equals(clientLanguage)) { request.setCharacterEncoding("Shift_JIS"); response.setContentType("text/html; charset=Shift_JIS"); } else if ("ko".equals(clientLanguage)) { request.setCharacterEncoding("EUC-KR"); response.setContentType("text/html; charset=EUC-KR"); } else { request.setCharacterEncoding("ISO-8859-1"); response.setContentType("text/html; charset=ISO-8859-1"); } 需要特別解釋一下的是:zh-CN不能用gb2312,因為字串集太小,「朱鎔基」不認,所以要放大一下。 -------------------------------------------------------------------------------- 在程序內部資料傳送的問題上(JDBC),有2套思路:1、按i18n.jar中的EncodingSet做(中文用cp936)。2、統一用unicode,但需要在發和送之前要轉碼方法。我的決定是,新模組的開發選項2,老模組的修改選項1,嘿嘿,理由也很簡單,老模組的資料長度已經類BIOS,轉unicode後長度上會有問題。 |
送花文章: 3,
|