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

Struts 1.x 系列教程(三):屬性資源文件中文亂碼徹底解決方案

     編輯:Java 相關知識

在 Struts 開發中,屬性文件承載國際化字符串,但 Java 對屬性文件編碼的特殊處理機制常導致中文亂碼。本文深度解析亂碼根因,提供 native2ascii 命令行方案與 Eclipse 插件方案兩套完整解決路徑。

一、亂碼根因深度解析

Java 編譯 *.java 文件時會自動轉為 UCS-2 編碼,因此 Java 源碼無亂碼問題。但屬性文件只能處理 ISO 8859-1 (Latin-1) 或 UCS-2 (\uxxxx 格式) 編碼。若屬性文件保存為 UTF-8/GBK,Java 仍按 ISO 8859-1 解讀,導致中文變亂碼(遇到 \u 開頭才按 UCS-2 處理)。

二、方案一:native2ascii 命令行轉換

JDK 自帶 native2ascii.exe(位於 <JDK安裝目錄>\bin)可將非 ISO 8859-1 字符轉為 \uxxxx 格式。

操作步驟

  1. 在 MyEclipse 中設置屬性文件編碼為 UTF-8 或 GBK(右鍵 Properties → Resource → Text file encoding)
  2. 編寫中文內容,例如 ErrorDescription.properties:
error.user.blank=用戶名不能為空.
error.password.blank=密碼不能為空.
error.password1.confirmation=密碼不匹配.
error.email.blank=Email不能為空
error.email.invalid=不是一個正確的email地址
  1. 執行轉換命令:
<JDK安裝目錄>\bin\native2ascii ErrorDescription.properties ErrorDescription.properties

(若需保留原文件,第二個參數改為新文件名)

  1. 轉換後內容變為:
error.user.blank = \u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.
error.password.blank = \u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a.
error.password1.confirmation = \u5bc6\u7801\u4e0d\u5339\u914d.
error.email.blank = Email\u4e0d\u80fd\u4e3a\u7a7a
error.email.invalid = \u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684email\u5730\u5740
  1. 重啟 Tomcat 或重新發布項目,中文正常顯示。

效果對比

圖1:未轉換時的亂碼效果

圖2:轉換後正常顯示中文

三、方案二:Eclipse 插件可視化編輯(推薦)

native2ascii 需每次修改後手動執行,效率低。兩款優秀插件可實現所見即所得編輯,自動處理編碼轉換。

1. Properties Editor 插件

  • 下載:sourceforge.jp/projects/propedit/
  • 三版本:獨立版、JBuilder 版、Eclipse 版
  • 解壓後將 features、plugins 目錄複製到 <MyEclipse安裝目錄>/eclipse
  • 界面類似 Eclipse 內置編輯器,編輯保存後自動轉為 \uxxxx 格式

圖3:Properties Editor 編輯界面

2. JInto 插件

圖4:JInto 表格編輯界面

驗證插件效果

用插件編輯保存後,再用 Eclipse 內置編輯器打開(右鍵 Open With 選擇),可見內容已自動轉為 \uxxxx 格式:

圖5:內置編輯器查看轉換後內容

總結建議

兩款插件功能相近,可根據個人偏好選擇。強烈建議使用插件方案,徹底告別手動命令行轉換,提升國際化開發效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved