既然生為中國人,就沒(méi)有什么好抱怨的了,遇到編碼的問(wèn)題,那只有解決它了。
如果經(jīng)常使用Struts,并做過(guò)國際化操作的人來(lái)說(shuō),對于中文資源文件的處理應該不會(huì )感到陌生的。比如下面兩個(gè)文件,一個(gè)是英文的,一個(gè)是中文的。對于英文的,一切照常;對于中文的,一般需要用JDK的native2ascii工具進(jìn)行轉換,
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實(shí)例使用的資源文件
hello.title=第一個(gè)Struts應用 hello.prompt.user=請輸入用戶(hù)名 hello.page.hello=你好 hello.page.wellocome=歡迎來(lái)到Javamxj的Blog |
我當前使用的Eclipse版本是3.1M6,如果使用Eclipse編輯application_zh_CN.properties文件,保存后,關(guān)閉這個(gè)文件,然后再次打開(kāi)它,會(huì )發(fā)現這個(gè)文件中的中文字符都變成了????。
為什么會(huì )發(fā)生這種情況呢?在中文操作系統下,Eclipse中的Java類(lèi)型文件的編碼的默認設置是GBK,但是對Properties資源文件的編碼的默認設置是ISO-8859-1。所以編輯Java文件中的中文不會(huì )出現問(wèn)題,但編輯Properties資源文件中的中文會(huì )出現問(wèn)題。
在3.1M6版本下,我們可以直接修改Properties資源文件的默認編碼了(Eclipse3.0版本好像不支持)。在Eclipse主界面下,打開(kāi) Window ->Perferences ->General ->Editors ->Context Types:
修改為GBK后,再次打開(kāi)application_zh_CN.properties文件,編輯后保存,再打開(kāi)時(shí),文件中的中文字符可以正常顯示了。
這還不行,還必須利用native2ascii來(lái)轉換一下。
native2ascii-本地碼-至-ASCII 碼轉換器 |
將含有本地編碼字符(既非 Latin1 又非 Unicode 字符)的文件轉換為 Unicode 編碼字符的文件。
結構 native2ascii [options] [inputfile [outputfile]]
說(shuō)明 Java 編譯器和其它 Java 工具只能處理含有 Latin-1 和/或 Unicode 編碼(\udddd 記號)字符的文件。native2ascii 將含有其它字符編碼的文件轉換成含 Latin-1 和/或 Unicode 編碼字符的文件。
若省略 outputfile,則使用標準輸出設備輸出。此外,如果也省略 inputfile,則使用標準輸入設備輸入。
選項 -reverse 執行相反的操作:將含 Latin-1 和/或 Unicode 編碼字符的文件轉換成含本地編碼字符的文件:
-encoding encoding_name 指定轉換過(guò)程使用的編碼名稱(chēng)。缺省的編碼從系統屬性 file.encoding 中得到。encoding_name 字符串必須是符合要求的字符串。
|
比如可以這樣利用native2ascii:
native2ascii -encoding gbk application_zh_CN.properties temp.properties
這里將根據application_zh_CN.properties輸出了一個(gè)臨時(shí)文件temp.properties,然后把application_zh_CN.properties中的文件內容替換為這個(gè)臨時(shí)文件的內容就可以了。
轉換后的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 |
這樣的操作對于一個(gè)或兩個(gè)資源文件還行,如果多個(gè)資源文件,這樣未免有些太麻煩了。你可以建立一個(gè)批處理文件(.bat);或者建立一個(gè)Ant文件,利用其包含的native2ascii任務(wù),也可以進(jìn)行批處理。
還是覺(jué)得麻煩?。?!
但是自從使用Eclipse后,好處多多,在Eclipse下,有這么兩個(gè)插件,可以用來(lái)處理資源文件,它們使用起來(lái)各有千秋。
JInto 0.8.0
仔細看看文檔,它提供的功能還是很不錯的。
Properties Editor
它提供了三個(gè)版本,單獨運行的版本、Eclipse版本、JBuilder版本,這里只看看Eclipse3下的版本
分別以links方式安裝這兩個(gè)插件,啟動(dòng)Eclipse,切換到Perferences,如圖:
· JInto插件
· Properties Editor插件
· 先利用Properties Editor插件編輯資源文件,選中application_zh_CN.properties,右擊,選擇對應的插件,如圖操作:
· Properties Editor插件編輯的效果
· 然后利用JInto插件編輯資源文件:
附帶說(shuō)說(shuō)XML文件
對應XML文件類(lèi)型,默認的編碼是UTF-8,但如果在xml聲明中可以指定其編碼,如“”就指定其編碼為GBK。這樣,Eclipse在讀取xml文件時(shí),會(huì )首先根據其聲明來(lái)設置這個(gè)文件的編碼,如果在聲明中沒(méi)有指定其編碼,那么會(huì )采用UTF-8編碼來(lái)讀取這個(gè)文件。所以對于xml文件,就不需要強制設置其默認的編碼類(lèi)型了。
真不知道Sun是怎么搞的,對于資源文件的編碼能搞得這么復雜,如果能像XML文件那樣從內容識別其編碼多好啊,等吧,等到Sun CEO換成了中國人吧。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。