request.getParameter() 回傳亂碼或 ??https://localhost/a.jsp?name=中國 取參數亂碼,Tomcat 4 時代的 Filter/ setCharacterEncoding 失效request.setCharacterEncoding() 不生效<%@ page contentType="text/html;charset=gb2312" %>
SetCharacterEncodingFilter(Tomcat 自帶範例 webapps/servlets-examples/WEB-INF/classes/filters/)web.xml 配置:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
server.xml,找到 <Connector> 元素URIEncoding="GBK":
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"
/>
<%@ page contentType="text/html;charset=gb2312"%>
<%
String q = request.getParameter("q");
q = (q == null) ? "沒有值" : q;
%>
<form action="tcnchar.jsp" method="post">
輸入中文:<input type="text" name="q"><input type="submit" value="確定">
</form>
您提交了:<%=q%>
同時測試 GET:tcnchar.jsp?q=測試 與 POST 表單提交,均應正常顯示中文。