<p id="tnnjj"><b id="tnnjj"></b></p><strike id="tnnjj"><span id="tnnjj"></span></strike>

    <form id="tnnjj"></form>

    <listing id="tnnjj"><listing id="tnnjj"></listing></listing>
    <noframes id="tnnjj"><form id="tnnjj"></form>
    <address id="tnnjj"><form id="tnnjj"><th id="tnnjj"></th></form></address>

    <address id="tnnjj"></address>

      解決jsp,tomcat,MYSQL下中文亂碼問題

      以下文章轉自互聯網,以備自查,若有版權請及時聯系我們刪除,謝謝!
      
      import java.io.IOException;
      import javax.servlet.Filter;
      import javax.servlet.ServletRequest;
      import javax.servlet.ServletResponse;
      import javax.servlet.FilterChain;
      import javax.servlet.ServletException;
      import javax.servlet.FilterConfig;
      public class SetCharacterEncodingFilter implements Filter {
          protected String encoding;
          protected FilterConfig filterConfig;
          protected boolean ignore;
          public SetCharacterEncodingFilter(){
                  encoding=null;
                  filterConfig=null;
                  ignore=true;
          }
          public void destroy(){
              encoding=null;
              filterConfig=null;
          }
      
          //真實的設置Encoding的代碼
          public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{
              if(ignore||request.getCharacterEncoding()==null){
                  String encoding=selectEncoding(request);
                  if(encoding!=null) request.setCharacterEncoding(encoding);
              }
              chain.doFilter(request, response);
          }
      
              //進入這個過濾器,首先執行的是init方法,此處代碼從web.xml中得到系統是否要setCharacterEncoding并且用哪種編碼
              public void init(FilterConfig filterConfig)throws ServletException{
                  this.filterConfig=filterConfig;
                  encoding=filterConfig.getInitParameter("encoding");
                  String value=filterConfig.getInitParameter("ignore");
                  if(value==null)    ignore=true;
                  else if(value.equalsIgnoreCase("true")) ignore=true;
                  else if(value.equalsIgnoreCase("yes")) ignore=true;
                  else ignore=false;
              }
              protected String selectEncoding(ServletRequest request){
                  return encoding;
      
      }
      
      }
      
      把/root/apache-tomcat-5.5.23/webapps/servlets-examples/WEB-INF/classes/filters目錄下把
      SetCharacterEncodingFilter.class導入工程的包中,例如我的為zhouzhiwei.survey.books
      在工程目錄的WebRoot/WEB-INF/web.xml添加
      
              setCharEncoding
              cn.myWiki.tools.SetCharacterEncodingFilter
              
                  encoding
                  gb2312
              
              
                  enable
                  true
              
          
          
              setCharEncoding
              /*
          
      
      以下內容有關Mysql的中文處理
      
          這段時間做的項目要用到Mysql。一說到Mysql ,中文問題就是初使用者的一個門檻!每個要錄入中文的功能、表都不可避免的問題.在這里就以我做的一個小型測試項目(日記管理系統)說起,開發工具myeclipse6.0, Dreamweaver8.0,數據庫Mysql 6.0 ,notepad編寫SQL,服務器:JBOSS4.0
          首先在建立WEB工程的時候要選好編碼,我們一般用UTF-8,因為UTF-8是國際標準編碼,集成的字符集比GBK 、GBK2312要多. 也有利于整個項目的擴展性。
      
      
           然后到每一個Servlet ,jsp 頁面都要將編碼設置成UTF-8,還有一個問題就是JBOSS 是會區分UTF-8的大小寫的所以最好就是用大寫,以免功虧一簣。
      
           JSP里面的設置:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          還有在META 里面也要設置
      
      到了最關鍵的地方就是連接數據庫的語句.(在本工程里面用的是JDBC直連,可以去MYSQL官方網站下載驅動)
      要在語句后面加兩個參數,代碼如下:
      url = "jdbc:mysql://localhost/diarydb?useUnicode=true&characterEncoding=UTF-8";
      注意在Hibernate中要改成這樣 把“&”符號改成 html標記 & 否則報錯
      
      try {
      
          Class.forName("com.mysql.jdbc.Driver");
          con = DriverManager.getConnection(url,"user","pwd");
          stmt = con.createStatement();
      
         } catch (ClassNotFoundException e) {
          // TODO: handle exception
         } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      到這里為止整個工程的設置告一段落,后面緊跟著的就是建庫,建表的設置問題;
      如果對MYSQL語句不熟,可以直接用客戶端工具(本人推薦navicat 不過是要錢D,這沒關系,破解版在中國是沒辦法找不到的) , 但我在這里就只演示一下代碼,如下:
      
      drop database diarydb;
      create database diarydb;
      alter database diarydb character set utf8;         ----設置數據庫編碼;
      use diarydb;
      create table userinfotable
      (
      uid int primary key not null ,
      uname varchar(20) ,
      upwd varchar(20),
      uclass int
      
      )ENGINE=InnoDB DEFAULT CHARSET=utf8;       -----設置表的編碼;
      
      好啦,經過以上一翻掘地三尺的設置,我們可愛的中文終于可以顯示在久違了的browser上了.各位使用MYSQL遇到中文問題的朋友們,希望我的這些資料能幫上你的忙……
      
      mysql對中文的支持不是很好,對編碼的分類很細,可以細到某個數據庫里面的某個表的某個列用什么編碼。默認情況下用的是latin1,要顯示中文的話就要用utf8,一般創建數據庫都不會明確的寫用什么編碼,所以問題就出現了。解決辦法是把mysql安裝文件夾下面的my.ini里面所有的default-character-set=lartin1改為=utf8,然后重啟數據庫,并把原來建的數據庫重新建一次(因為改之前建的用了lartin1的編碼,如果不方便重建也可以選擇把它倒出來再導回去)。
      
      以上是對于在Windows環境下Mysql的配置。如下是在linux環境下的配置:
      
      中文存入mysql數據表出現的亂碼,從JSP頁面讀取mysql中文數據出現亂碼,以及在sell環境下查看數據庫表中文數據出現亂碼。
      
      linux平臺:ubuntu6.10
      
      mysql版本:5.0
      
      瀏覽器:firefox2.0
      
      為了解決中文亂碼的問題首先就是要同一字符集,我采用utf-8。
      
      第一步:安裝mysql后,修改配置文件/etc/mysql/my.cnf 找到相應項并添加如下字段,如下所示:(注意是添加,配置文件中其他不相關的內容下面并沒有列出來)
      
      [client]
      
      default-character-set=utf8
      
      [mysqld_safe]
      
      default-character-set=utf8
      
      [mysqld]
      
      default-character-set=utf8
      
      [mysql]
      
      default-character-set=utf8
      
      重新啟動mysql服務,進入sell終端,進入mysql的命令提示符下輸入如下指令:
      
      mysql>show variables like '%char%';
      
      如果出現的列表各項內容和以下相同表明配置成功了,
      
      +-----------------------+-----------------------
      
      | Variable_name | Value
      
      +-----------------------+-----------------------
      
      | character_set_client | utf8
      
      | character_set_connection | utf8
      
      | character_set_database | utf8
      
      | character_set_filesystem | binary
      
      | character_set_results | utf8
      
      | character_set_server | utf8
      
      | character_set_system | utf8
      
      | character_sets_dir | /usr/share/mysql/charsets/
      
      +---------------------+---------------------------
      
      第二步:在要發送中文或者要讀取中文的JSP頁面(最好所有頁面)都添加如下聲明:
      
      <%@page pageEncoding="UTF-8"%>
      
      <%@ page contentType="text/html;charset=utf-8"%>
      
      <% request.setCharacterEncoding("utf-8"); %>
      
      在標簽對中添加如下:
      
      注意在servlet中對請求進行響應的方法中同樣要有:
      
      response.setContentType("text/html;charset=utf-8");
      
      第三步:(由于不明原因firefox發送的請求仍然是latin1的時候執行這一步)
      
      在將請求的參數插入數據庫之前還要再執行一次轉碼(將latin1編碼轉換為utf-8),例如:
      
      String utf8_str = new String( latin_str .getBytes("latin1"),"utf-8");
      
      這一步可以寫在一個過濾器中,不怕麻煩也可以在每一次在將請求數據插入之前都進行一次轉碼。
      
      另外:在連接數據庫的時候可以不用加上字符集參數了,直接用用戶名和密碼連接就可以了,如連接:
      
      con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數據庫名","用戶名","密碼");
      半夜强行挺进她的身体视频
      <p id="tnnjj"><b id="tnnjj"></b></p><strike id="tnnjj"><span id="tnnjj"></span></strike>

        <form id="tnnjj"></form>

        <listing id="tnnjj"><listing id="tnnjj"></listing></listing>
        <noframes id="tnnjj"><form id="tnnjj"></form>
        <address id="tnnjj"><form id="tnnjj"><th id="tnnjj"></th></form></address>

        <address id="tnnjj"></address>