J2EE Web元件中中文及相關的問題(五) (轉)
四、 國際化:namespace prefix = o ns = "urn:schemas--com::office" />
在前面第五小節中的form.裡,也許臺灣省的客戶更喜歡
我們首先在appWEB-INFclasses中建立三個區域相關的資源。中文簡體版:
#LocalStrings_zh_CN.properties
page.title=國際化
form.label=請輸入你的姓名
form.button=提交
中文繁體版:
#LocalStrings_zh_TW.properties
page.title=國際化
form.label=請輸入您的姓名
form.button=提交
英文版:
#LocalStrings_tw.properties
page.title=internationalization
form.label=Please enter your name
form.button=submit
LocalStrings_zh_CN.properties、LocalStrings_zh_TW.properties和LocalStrings_tw.properties這三個檔案均以預設的編碼方式儲存。form.jsp改成:
">
beans.LocalStrings的原始檔如下:
package beans;
import .util.ReBundle;
import java.io.UnsupportedEncodingException;
import java.util.Locale;
public class LocalStrings
{
protected ResourceBundle rb;
protected boolean encoded;
public LocalStrings(String baseName, Locale locale)
{
this.rb = ResourceBundle.getBundle(baseName, locale);
if(locale.getCountry().equals("CN") || locale.getCountry().equals("TW"))
encoded = true;
}
public String getString(String key)
{
String value = rb.getString(key);
if(encoded)
{
try
{
byte bs[] = value.getBytes("ISO-8859-1");
return new String(bs, "GBK");
}
catch(UnsupportedEncodingException uee)
{
return value;
}
}
return value;
}
}
從訪問form.jsp,我們應該看到正確的輸出,然後透過瀏覽的Inte選項,將瀏覽器的語言設定成“中文(臺灣)[zh-tw]”,再訪問form.jsp,我們就能看到繁體字的提示資訊了;再將瀏覽器語言設定成“英語(美國)[en-us]”,再訪問form.jsp。為什麼要用LocalStrings到重新編碼這些字串呢,檢視ResourceBundle的源可以發現,它讀取檔案中時,並沒有對字串進行編碼,所以我們不得不在LocalStrings中對使用正確的編碼對這些區域相關的字串編碼。
五、 一些建議
我們用(Java 2 Enterprise Edition/ Java 2 Platform, Enterprise Edition,Java 2企業版)開發的企業應用程式,可能在一些支援J2EE規範的之間移植,而這些伺服器的平臺也可能不同。我們的客戶的或所使用的瀏覽器,也有可能不同,所以我們應努力遵循一些建議:
l 從請求頭中判斷出的作業系統、瀏覽器和所使用的語言,而用適當的方法進行相應的響應頭中的charset的設定。
l 儘量不在中使用含非英文字元的常量字串。
l 對於JSP檔案,只要頁面中存在不被伺服器忽略的含非英文字元的常量字串,就應該對page指令中的pageEncoding屬性進行相應的設定。
l 使用過濾器來設定透過
ServletRequest.setCharaterEncoding(String encoding);
來設定請求實體的編碼,而不是在每個JSP或Servlet中設定。拋棄在Servlet設定content-Type的習慣,讓過濾器根據不同的資源和使用者透過
ServletResponse.setContentyType(String type);
來設定。
l 儘量使用UTF-8作編碼,而不是GBK或GB2312。
l 充分考濾到底層所使用的編碼,它可能在應用程式的移植中帶來麻煩。
l 不能簡單有效地判斷出使用者瀏覽器編碼提交的資料所使用的編碼,是程式設計師的一大遺憾,如果對現有的標準進行擴充套件,修改form元素的enctype,讓這個屬性也完全相容MIME的charset,Web應用程式的開發,又少去了一些麻煩。
附錄A. 本文所有的實驗,環境如下:
l 作業系統 MS 2000 Server
l 區域設定 中文(中國)
l 系統語言 中文(簡體) 預設
l 瀏覽器 Microsoft Internet Explorer 6.0b
l Java虛擬機器 J2SDK 1.4.0-b92
l Java伺服器 4.0.4
附錄B. 參考資料:
1. Java技術及其應用/王克宏主編;董麗編著.—北京:高等教育出版社,1999(2001重印)
2. JSP指南(第二版)/(美)布朗(Brown, S.)等著;王軍 等 譯.—北京:電子工業出版社,2002.10 (Wrox程式設計師參考系列)書名原文:Professional JSP 2nd Edition
3. JSP站點設計程式設計指南/(美)杜飛(Duffey, K.)等著;王軍 等 譯.—北京:電子工業出版社,2002.7 (Wrox程式設計師參考系列)書名原文:Professional JSP Site Design
4. J2EE伺服器端高階程式設計指南/(美)阿拉瑪拉尤(Allamaraju, S.)等著;聞道工作室譯.—北京:機械工業出版社,2001.9 (Wrox程式設計師參考系列)書名原文:Professional Java Server Programming J2EE Edition
5. XML高階程式設計(第二版)/(英)布伯克(Birbeck, M.)等著;裴劍鋒等譯.—2版. —北京:機械工業出版社,2002.5 (Wrox程式設計師參考系列)書名原文:Professional XML 2nd Edition
6. Java程式設計思想(英文版·第2版)/(美)埃克爾(Eckel, B.)著.—北京:機械工業出版社,2002.1(經典原版書庫)書名原文:Thinking in Java (Second Edition)
7. 技術實踐——Just XSL/(美)森普遜(Simpson, J.E.)著;彭仕安等譯.—北京:機械工業出版社,2002.7 (Internet新技術叢書)書名原文:Just XSL
8. Java程式設計技術內幕/(美)休斯(Hughes, M.)著;劉勇先等譯.—北京:國防工業出版社,2002.3 (程式設計經典譯叢)書名原文:Java Network Programming
9. Java TM 2 SDK, Standard Edition Documentation Version 1.4.0.
—Sun Microsystems, Inc.
10. HTML 4.01 Specification. —W3C,1999.12.24.
11. Hypertext Traner Protocol -- HTTP/1.1/菲爾丁(Fielding, R) 等著. —IETF,1999.6. /rfc2616.txt">
12. Java中文處理學習筆記——Hello Unicode/車東.—CSDN_文件中心
13. 完全手冊/(美)鮑威爾(Powell, T.)等著;牛力等譯. —北京:電子工業出版社,2002.7(完全手冊叢書)書名原文:JavaScript:The Complete Reference
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-963161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sql Mode及相關問題SQL
- Java/J2EE中文問題Java
- Unix程式設計/應用問答中文版 ---12.日誌相關問題 13.程式相關問題(轉)程式設計
- MySQL中鎖的相關問題DTQUMySql
- SpringCloud及相關元件SpringGCCloud元件
- 【SSM】WEB專案中的中文亂碼問題SSMWeb
- ATL元件中文路徑註冊問題 (轉)元件
- iptables刪除命令中的相關問題
- solaris上開發J2EE應用中文問題的解決 (轉)
- EBS中form埠及servlet , socket模式問題及form相關配置檔案ORMServlet模式
- web service相關轉摘Web
- 深入分析 Java Web 中的中文編碼問題JavaWeb
- 小程式視訊旋轉的相關問題
- pycharm+python使用中的相關問題PyCharmPython
- web.xml中的servlet相關WebXMLServlet
- Unix程式設計/應用問答中文版 ---21.FreeBSD相關問題(轉)程式設計
- apache web 中的CGI應用問題(轉)ApacheWeb
- redis快取相關問題及解決方案Redis快取
- 也談箭頭函式的 this 指向問題及相關函式
- Docker 相關問題Docker
- django相關問題Django
- electron相關問題
- Oracle MTS的相關問題Oracle
- Mac環境中搭建Hadoop相關問題及處理辦法MacHadoop
- 關於盒模型相關的問題模型
- 監聽器中spring注入相關的問題Spring
- getParameter方法的中文問題【轉】
- windows系統相關命令及問題排查實踐Windows
- NLP相關問題中文字資料特徵表達初探特徵
- Unix程式設計/應用問答中文版 ---4.系統資源相關問題(轉)程式設計
- 關於web start的問題Web
- 關於JDK1.2的JDBC中文問題的解決 (轉)JDKJDBC
- java語言相關的問題Java
- 面試遇到的redis相關問題面試Redis
- Java相關問題整理Java
- PHP相關問題集合PHP
- 大模型相關問題大模型
- 關於jsp中轉發的問題JS