Spring + Struts2 + Hibernate (SSH) 專案中,Action 接收到的中文參數為 GBK 編碼,導致亂碼。JSP 頁面、Java 檔案均為 UTF-8,配置過濾器仍無效。
web.xml 最前面配置:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
server.xml 中的 Connector:
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" />
JDBC URL 附加參數:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Taipei
<form action="..." method="post" accept-charset="UTF-8">
Content-Type: application/x-www-form-urlencoded; charset=UTF-8request.getCharacterEncoding() 應為 UTF-8。utf8mb4。