1.JSP與頁面參數(shù)之間的亂碼
JSP獲取頁面參數(shù)時(shí)一般采用系統(tǒng)默認(rèn)的編碼方式,如果頁面參數(shù)的編碼類型和系統(tǒng)默認(rèn)的編碼類型不一致,很可能就會(huì)出現(xiàn)亂碼。解決這類亂碼問題的基本方法是在頁面獲取參數(shù)之前,強(qiáng)制指定
request獲取參數(shù)的編碼方式:request.setCharacterEncoding("GBK")或request.setCharacterEncoding("gb2312")。
servlet 如果在JSP將變量輸出到頁面時(shí)出現(xiàn)了亂碼,可以通過設(shè)置response.setContentType("text/html;charset=GBK")或response.setContentType("text/html;charset=gb2312")解決。
----------------------------------
2、數(shù)據(jù)庫亂碼
這種亂碼會(huì)使你插入數(shù)據(jù)庫的中文變成亂碼,或者讀出顯示時(shí)也是亂碼,解決方法如下:
在數(shù)據(jù)庫連接字符串中加入編碼字符集
String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
并在頁面中使用如下代碼:
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
3.中文作為參數(shù)傳遞亂碼
當(dāng)我們把一段中文字符作為參數(shù)傳遞個(gè)另一頁面時(shí),也會(huì)出現(xiàn)亂碼情況,解決方法如下:
在參數(shù)傳遞時(shí)對參數(shù)編碼,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
然后在接收參數(shù)頁面使用如下語句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
4.JSP中文亂碼問題之四:Get方式表單傳遞和URI方式傳遞參數(shù)亂碼
解決方案
apache-tomcat-6.0.18\conf\server.xml
在這個(gè)內(nèi)加入一行
< Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK" />
5.在b.jsp中把String name=request.getParameter("name");修改為
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");
6.JSP中文亂碼問題更好的解決方法是使用過濾器技術(shù)
Encoding過濾器
package com.htt; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import
javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class Encoding implements Filter { public void
destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK"); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } }
Web.xml文件中的設(shè)置
< filter> < filter-name>encoding< /filter-name> < filter-class>com.htt.Encoding< /filter-class> < /filter> < filter-mapping> < filter-name>encoding< /filter-name>
< url-pattern>/ToCh_zn< /url-pattern> < /filter-mapping>