<%@ page pageEncoding="UTF-8" %>,否則 Tomcat 編譯時用默認編碼導致數據丟失。request.setCharacterEncoding("UTF-8")。最佳實踐:配置 CharacterEncodingFilter 映射 /*,初始化參數 charset=UTF-8。characterEncoding=UTF-8。public class EncodingFilter implements Filter {
private String encoding = "UTF-8";
public void init(FilterConfig cfg) { encoding = cfg.getInitParameter("charset"); }
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
req.setCharacterEncoding(encoding);
chain.doFilter(req, res);
}
public void destroy() {}
}
<filter>
<filter-name>Character Encoding Filter</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
<init-param><param-name>charset</param-name><param-value>UTF-8</param-value></init-param>
</filter>
<filter-mapping>
<filter-name>Character Encoding Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
同一 WAR 部署到 Windows XP (默認 CP1252) + 同樣數據庫/服務器,應用程序正常運行,證明全鏈路 UTF-8 消除了平台相關性。數據庫控制台查詢因 OS 編碼不同顯示亂碼,但不影響應用邏輯。
統一指定 UTF-8 為唯一可靠的中文解決方案,適用於所有框架(Struts、Spring、Hibernate 等),一次配置,終身受益。