AdSense

網頁

2018/6/10

ZK 多語系 i18n zk-label.properties (i3-label.properties) 中文顯示Uncode編碼問題

ZK的多語系(i18n)的支援可透過在WEB-INF目錄下設定zk-label_lang_CNTY.properties檔(舊版的好像是叫做i3-labels.properties),並在zul直接透過EL及隱含物件labels來存取。(注意labels是全小寫,在Eclipse編輯器大寫"L"和小寫"l"的斜體長得很像,剛才因為這個小差異折騰了半天。)

<label value="${labels.app.login}"/>

但今天在Eclipse Properties Editor編輯好properties檔時,在zul的畫面上卻是顯示中文的Unicode。

例如在zk-label_zh_TW.properties中設定了app.login=登入,但在畫面上卻顯示為\u767b\u5165


在確認Eclipse編輯器及properties檔都是UTF-8編碼(ZK的properties檔編碼預設是UTF-8)後,最後發現問題原因是Eclipse的Properties Editor會自動將properties檔的中文轉成跳脫的Uncode編碼,又因為Eclipse中預設properties檔的編碼為ISO-8859-1,但ZK中的properties檔的編碼為UTF-8,也就是被轉了兩次,導致網頁上的中文反而變成了Unicode碼。

ZK properties檔編碼為UTF-8,
以Properties Editor開啟ZK properties檔,
然後在Properties Editor輸入新的文字"登入"後存檔,
輸入的文字(UTF-8)被Properties Editor再一次轉碼回UTF-8編碼"\u767b\u5165"。

解決方式就是不要使用Eclipse內建的編輯器或Properties Editor開啟或編輯zk-label_lang_CNTY.properties檔,改使用Notepad++編輯器來編輯即可。


參考:

沒有留言:

AdSense