JSP,servlet和資料庫之間傳值出現亂碼的問題
阿新 • • 發佈:2019-01-27
最近困擾我很久的一個問題終於解決了,為他我頭疼了好幾天,問題是JSP通過servlet向資料庫傳值,查詢顯示在頁面的時候出現了亂碼,原先我資料庫中有兩行帶有中文的資料,查詢的時候倒是沒有出現亂碼,我debug一下,發現JSP和servlet中所有接受中文字符集的變數都沒有出現亂碼,我去資料庫檢視,所有新增的中文字元都是問號,問題發現了,我就百度什麼原因,有人說改變tomcat字符集,通過更改server.xml檔案的字符集來接受中文字元,
方法一:
我試了一下還是沒能解決問題,
方法二:
如果通過servlet向資料庫傳送資料中包含中文,可以再servlet中設定
方法三:
在頁面時設定charset的字符集
方法四:
在web.xml檔案定義編碼,同時在SetCharacterEncodingFilter類裡定義編碼為utf-8
web.xml:
SetCharacterEncodingFilter類:
方法五:在form表單裡定義編碼
這些方法都試過了,還是出現了亂碼。無奈,之後在群裡請教大神,有一個大神說,在MySQL資料庫裡執行下面這一句話
我執行之後的結果是
大神說其中我這兩個需要更改,
然後我就找到安裝目錄下的my.ini檔案吧把下面幾句話給成如下格式:
方法一:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
我試了一下還是沒能解決問題,
方法二:
如果通過servlet向資料庫傳送資料中包含中文,可以再servlet中設定
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8");
方法三:
在頁面時設定charset的字符集
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
方法四:
在web.xml檔案定義編碼,同時在SetCharacterEncodingFilter類裡定義編碼為utf-8
web.xml:
<filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>com.bzu.servlet.SetCharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>SetCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
SetCharacterEncodingFilter類:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8");//處理編碼 response.setCharacterEncoding("UTF-8");//處理編碼 chain.doFilter(request, response);//讓過濾器執行下一個請求 } public void destroy() { } public void init(FilterConfig arg0) throws ServletException { }
方法五:在form表單裡定義編碼
accept-charset="utf-8" onsubmit="document.charset='utf-8';"
這些方法都試過了,還是出現了亂碼。無奈,之後在群裡請教大神,有一個大神說,在MySQL資料庫裡執行下面這一句話
show variables like '%char%';
我執行之後的結果是
大神說其中我這兩個需要更改,
然後我就找到安裝目錄下的my.ini檔案吧把下面幾句話給成如下格式:
default-character-set=utf8
default-storage-engine=INNODB
之後重啟MySQL,之後果真問題解決了。
附帶群的qq號, 293074111希望群裡能幫助一下真正愛學習Java的同學