1.編碼問題:
(1)首先確定JSP頁面頭部是否有:<%@ page contentType="text/html; charset=GBK" %>
(2)類似這樣的轉碼:
String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");
(3)添加filter字符過濾器,具體做法:
先添加類:
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import org.apache.log4j.Logger;
import java.net.URLEncoder;
/**
* 請求中中文字符串過濾類
*/
public class SetEncodingFilter
implements Filter {
private Logger logger=Logger.getLogger(this.getClass());
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
logger.info("請求轉碼過濾器===================");
request.setCharacterEncoding("gb2312");
chain.doFilter(request,response);
}
public void destroy() {
}
}
再註冊類到XML裏:
<filter-name>Set Encoding</filter-name>
<filter-class>SetEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(4)如果是通過"a.jsp?param=中文"傳遞參數,則需要:
a.在傳參數之前先把參數進行轉碼:java.net.URLEncoder.encode(param);
取值用java.net.URLDncoder.dncode(param);再轉回中文
b.在你的Tomcat目錄-->conf目錄-->server.xml裏找出這段:
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" <!--在裏邊加上這個參數-->URIEncoding="gb2312"
/>
(5)數據庫亂碼,首先確定你在插入數據庫之前是中文,解決辦法:
在數據庫的數據庫連接URL中加上useUnicode=true&characterEncoding=GBK就OK了。
如果在讀取的時候出現亂碼用第二種方法解決.