首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 國際化資源文件中文亂碼解決:native2ascii 轉碼大法

     編輯:Java 相關知識

問題現場

在 ApplicationResources.properties 直接寫中文,部署後頁面顯示全是問號(???)。原因:Java 預設 properties 文件為 ISO-8859-1 編碼,中文須轉為 Unicode 轉義序列(\uXXXX)。

解決步驟

  1. 使用 JDK 自帶 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 形式。
  2. 配置 web.xml 指定資源包基名:
    <init-param>
      <param-name>application</param-name>
      <param-value>mystruts.ApplicationResources_zh_CN</param-value>
    </init-param>
    
    param-value 為**包名.文件名**(不含 _zh_CN.properties 後綴),Struts 會自動根據 Locale 尋找對應文件。
  3. 重新部署、啟動 Tomcat,中文正常顯示。

原理解析

  • PropertyResourceBundle 讀取 properties 時假設 ISO-8859-1,遇非 ASCII 字符會解碼錯誤。
  • native2ascii 將 GBK/UTF-8 編碼文件**無損轉換**為 ASCII 字符+Unicode 轉義,符合規範。
  • Struts 基於 MessageResources 封裝 ResourceBundle,遵循標準命名約定 basename_locale.properties。

最佳實踐

  • 構建腳本(Ant/Maven)集成 native2ascii 任務,自動化轉碼。
  • 源碼統一用 UTF-8 編輯,構建時轉義,避免手工維護痛苦。
  • 多語言擴展:新增 ApplicationResources_en_US.properties 等即可。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved