具體以下:html
1.JSP裏CHARSET要爲GB2312
contentType="text/html;charset=GB2312" java
2.SERVERLET類裏要有
request.setCharacterEncoding(gb2312);web
3.字符集的從新格式化
java.net.URLEncoder java.net.URLDecoder 對應的encode 與decode進行編碼解碼。
在傳輸數據時候瀏覽器會自動對要表單傳輸的數據進行url編碼,所使用的編碼方式取決於當前網頁顯示時候使用的編碼方式。
對於http請求消息的url地址後的參數,getparameter等方法進行自動url解碼時採用的編碼方式取決servlet引擎;tomcat默認用ISO8859-1進行解碼。
從新格式化語句以下:
String str1 = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gb2312");sql
4.TOMCAT的CONF文件夾裏的SERVER.XML中大約92行左右.(若是你沒改過)
找到connector區塊,加入以下一行:
URIEncoding="GBK" 或 URIEncoding="GB2312" 或 URIEncoding="UTF-8"
完整的應以下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GB2312"
/>數據庫
5.Tomcat的conf文件夾下的web.xml文件的<servlet></servlet>標籤之間添加以下代碼
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>瀏覽器
6.使用Servlet規範中的過慮器指定編碼
<1>.新建立一個servlet時,Interfaces接口:繼承javax.servlet.Filter
options中只需選中:create Inherited Methods; create Constructors;
建好後在其doFilter()方法中:
arg0.setCharacterEncoding("gb2312"); //實現請求亂碼的處理
arg1.setCharacterEncoding("gb2312"); //實現響應亂碼的處理
arg2.doFilter(arg0,arg1); //繼續執行其餘過濾器 或 jsp、servlet
<2>.再在web.xml中把過濾器servlet中的相關內容的<servlet></servlet>改成<filter></filter>
並修改<filter-mapping></filter-mapping>中的<url-patterm>/*</url-patterm> ; 「/*」表示執行任何文件
簡介過濾器:
A.每一個過濾器都會在 web.xml中有單獨的配置:
<filter>
<filter-name>過濾器的別名</filtr-name>
<filter-class>過濾器的物理地址,帶有完整的包路徑的</filter-class>
</filter>
<filter-mapping>
<filter-name>過濾器的別名</filter-name>
<filter-patterm>過濾器訪問的路徑</filter-patterm>
</filter-mapping>
B.當因爲某種緣由想要刪除servlet類時,刪除後在web.xml中還會保留刪除的servlet類的記錄,
因此必須手動在web.xml中刪除一下已刪除的servlet類的信息
過濾器的在web.xml中的典型配置和主要代碼以下:
web.xml:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>net.vschool.web.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CharacterEncodingFilter.java:
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 CharacterEncodingFilter implements Filter
{
protected String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException
{
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
chain.doFilter(request, response);
}
}tomcat
7.解決數據庫的亂碼
在jdbc.url中明確字符集 (不適用於sqlserver)
在鏈接數據庫時:con=DriverManager.getConnection(url,"sa","");
url="jdbc:協議:子協議://IP:端口; 庫 ? useUnicode=true & characterEncoding=gb2312";app