response.setCharacterEncoding("UTF-8") 及 Header 仍亂碼常見遺漏點:
request.setCharacterEncoding("UTF-8") 必須在讀取參數(getParameter)之前調用。server.xml 中 <Connector URIEncoding="UTF-8" ... /> 確保 URL 參數正確解碼。<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>。?characterEncoding=utf8(MySQL)或對應參數。@WebFilter("/*")
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, resp);
}
}
<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>
徹底解決亂碼需「請求、處理、回應、存儲、傳輸」全鏈路 UTF-8。