在使用 WebWork 2 開發 Web 應用時,中文編碼問題一直是開發者關注的焦點。本文記錄了在 WebLogic 伺服器環境下,針對 WebWork 2 框架的中文亂碼問題進行排查與解決的完整過程。WebLogic 本身對 URL 中文參數支援良好,但框架層面仍需妥善配置。
在所有 JSP 頁面頂部明確指定字元集為 GB2312,確保瀏覽器正確解碼:
<%@ page contentType="text/html; charset=GB2312" language="java" %>
注意:部分開發者反映加上此設定反而導致亂碼,但在實測環境中此設定正常生效。
在 webwork.properties 中加入國際化編碼設定:
webwork.locale=zh_CN
webwork.i18n.encoding=GB2312
完成以上兩步後,頁面傳值、資料庫寫入與讀取均正常運作。
同 Struts 的 <bean:message> 一樣,WebWork 的文字標籤讀取 properties 檔案時也會出現亂碼。傳統做法是使用 native2ascii 轉換,但修改時需反覆轉換,極不方便。
採用修改原始碼方式徹底解決:
TextTag.java 原始檔if (msg != null) {
try {
msg = new String(msg.getBytes("ISO-8859-1")); // 新增此行
// 後續輸出邏輯...
}
}
此法同樣適用於 Struts 框架,免去資源檔轉換之苦。
在 webwork.properties 中指定解析器:
webwork.multipart.parser=pell // 勿使用 cos
設定後即可正確處理中文檔名上傳。
通過 JSP 頁面編碼宣告、框架層級國際化配置、標籤原始碼修正以及上傳解析器選擇,可徹底解決 WebWork 2 在 WebLogic 下的中文編碼問題。此方案經實測驗證,頁面傳值、資料庫操作、國際化標籤、檔案上傳均正常運作。