JSP,servlet和資料庫之間傳值出現亂碼的問題

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   sp   java   for   

最近困擾我很久的一個問題終於解決了,為他我頭疼了好幾天,問題是JSP通過servlet向資料庫傳值,查詢顯示在頁面的時候出現了亂碼,原先我資料庫中有兩行帶有中文的資料,查詢的時候倒是沒有出現亂碼,我debug一下,發現JSP和servlet中所有接受中文字元集的變數都沒有出現亂碼,我去資料庫查看,所有添加的中文字元都是問號,問題發現了,我就百度什麼原因,有人說改變tomcat字元集,通過更改server.xml檔案的字元集來接受中文字元,
方法一:
<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=utf8default-storage-engine=INNODB



之後重啟MySQL,之後果真問題解決了。

附帶群的qq號, 293074111希望群裡能協助一下真正愛學習Java的同學



JSP,servlet和資料庫之間傳值出現亂碼的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.