利用Eclipse編輯中文資源檔
如果經常使用Struts,並做過國際化操作的人來說,對於中文資源檔的處理應該不會感到陌生的。比如下面兩個檔案,一個是英文的,一個是中文的。對於英文的,一切照常;對於中文的,一般需要用JDK的native2ascii工具進行轉換。
application_en.properties # Resources for the Hello sample application hello.title=A first Struts program hello.prompt.user=Please enter a UserName hello.page.hello=Hello hello.page.wellocome=Wellcome to Blog of Javamxj application_zh_CN.properties # Hello執行個體使用的資源檔 hello.title=第一個Struts應用 hello.prompt.user=請輸入使用者名稱 hello.page.hello=你好 hello.page.wellocome=歡迎來到Javamxj的Blog |
我當前使用的Eclipse版本是3.1M6,如果使用Eclipse編輯application_zh_CN.properties檔案,儲存後,關閉這個檔案,然後再次開啟它,會發現這個檔案中的中文字元都變成了????。
為什麼會發生這種情況呢?在中文作業系統下,Eclipse中的Java類型檔案的編碼的預設設定是GBK,但是對Properties資源檔的編碼的預設設定是ISO-8859-1。所以編輯Java檔案中的中文不會出現問題,但編輯Properties資源檔中的中文會出現問題。
在3.1M6版本下,我們可以直接修改Properties資源檔的預設編碼了(Eclipse3.0版本好像不支援)。在Eclipse主介面下,開啟 Window ->Perferences ->General ->Editors ->Context Types
修改為GBK後,再次開啟application_zh_CN.properties檔案,編輯後儲存,再開啟時,檔案中的中文字元可以正常顯示了。
這還不行,還必須利用native2ascii(native2ascii-本地碼-至-ASCII 碼轉換器 )來轉換一下。
將含有本地編碼字元(既非 Latin1 又非 Unicode 字元)的檔案轉換為 ascii編碼字元的檔案。
native2ascii命令的格式:native2ascii [-reverse] [-encoding] [inputfile [outputfile]]
說明:
Java 編譯器和其它 Java 工具只能處理含有 Latin-1 和/或 Unicode 編碼(\udddd 記號)字元的檔案。native2ascii 將含有其它字元編碼的檔案轉換成含 Latin-1 和/或 Unicode 編碼字元的檔案。
若省略 outputfile,則使用標準輸出裝置輸出。此外,如果也省略 inputfile,則使用標準輸入裝置輸入。
選項:
-reverse
執行相反的操作:將含 Latin-1 和/或 Unicode 編碼字元的檔案轉換成含本地編碼字元的檔案: -encoding encoding_name 。
指定轉換過程使用的編碼名稱。預設的編碼從系統屬性 file.encoding 中得到。encoding_name 字串必須是符合要求的字串。
如果application_zh_CN.properties檔案的路徑是:D:\myfiles\myproject\,則轉換該檔案的方法如下:“開始”——“運行”(或者直接按Win + R),輸入cmd,按斷行符號或點擊確定,開啟命令符視窗。輸入d:,按斷行符號;輸入cd myfiles,按斷行符號;輸入cd myproject,按斷行符號;現在已經通過cd命令轉到該檔案的路徑下了,接下來就可以直接利用命令對其進行操作了,輸入:native2ascii -encoding application_zh_CN.properties temp.properties,按斷行符號,這裡將根據application_zh_CN.properties輸出了一個臨時檔案temp.properties,然後把application_zh_CN.properties中的檔案內容替換為這個臨時檔案的內容就可以了。轉換後的application_zh_CN.properties 內容如下:
# Hello\u5b9e\u4f8b\u4f7f\u7528\u7684\u8d44\u6e90\u6587\u4ef6
hello.title=\u7b2c\u4e00\u4e2aStruts\u5e94\u7528
hello.prompt.user=\u8bf7\u8f93\u5165\u7528\u6237\u540d
hello.page.hello=\u4f60\u597d
hello.page.wellocome=\u6b22\u8fce\u6765\u5230Javamxj\u7684Blog
這樣的操作對於一個或兩個資源檔還行,如果多個資源檔,這樣未免有些太麻煩了。你可以建立一個批次檔(.bat);或者建立一個Ant檔案,利用其包含的native2ascii任務,也可以進行批處理。