在 ApplicationResources.properties 直接寫中文,部署後頁面顯示全是問號(???)。原因:Java 預設 properties 文件為 ISO-8859-1 編碼,中文須轉為 Unicode 轉義序列(\uXXXX)。
native2ascii 轉碼:
C:\j2sdk1.4.1_02\bin> native2ascii -encoding GBK ^
E:\workspace\project\com\struts\ApplicationResources.properties ^
E:\workspace\project\com\struts\ApplicationResources_zh_CN.properties
生成的文件中文變為 \u4E2D\u6587 形式。<init-param>
<param-name>application</param-name>
<param-value>mystruts.ApplicationResources_zh_CN</param-value>
</init-param>
param-value 為**包名.文件名**(不含 _zh_CN.properties 後綴),Struts 會自動根據 Locale 尋找對應文件。PropertyResourceBundle 讀取 properties 時假設 ISO-8859-1,遇非 ASCII 字符會解碼錯誤。native2ascii 將 GBK/UTF-8 編碼文件**無損轉換**為 ASCII 字符+Unicode 轉義,符合規範。MessageResources 封裝 ResourceBundle,遵循標準命名約定 basename_locale.properties。native2ascii 任務,自動化轉碼。ApplicationResources_en_US.properties 等即可。