Java與mysql亂碼的問題

 
    安裝選擇GBK,使用選擇UTF-8。

解決方法一:(最重要的一種方法)
            打開mysql目錄下的bin文件夾,找到my.ini,使用記事本找開,分別找“[mysql]、[client]、[mysqld]”,添加(或改成)“default-character-set=utf8”。

             [mysql]

            default-character-set=utf8

           [client]

         default-character-set=utf8

          [mysqld]

            default-character-set=utf8

          然後建立表時,也要用(比如)
           DROP   TABLE   IF   EXISTS   `Company`;
          CREATE   TABLE   IF   NOT   EXISTS   `Company`
         (
               `Cname`   VARCHAR(10)   NOT   NULL,
                `Caddr`   VARCHAR(100),
              `Ctel`     VARCHAR(16)
          )ENGINE=InnoDB   DEFAULT   CHARSET=UTF8;

       這樣就沒問題。

      如果是jsp要聲明:

        contentType="text/html;charset=gb2312"

     我用了一下好像沒什麼效果。

解決方法二:

      連接mysql時(無論在從mysql讀還是取數據的情況),指定使用的編碼方式爲utf-8,具體代碼如下

      //裝載mysql-jdbc驅動

       Class.forName("com.mysql.jdbc.Driver").newInstance();

      //連接數據庫

      Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/javatest?user=root&password=admin&useUnicode=true&characterEncoding=utf-8 " );

      我是用這個方法解決的。

解決方法三:

       如果方法一不行那麼在方法一的基礎上對讀入的字符串進行強制編碼方式轉換。

      代碼示例如下:

      String name = rst.getString("name");
      name= new String(name.getBytes("ISO-8859-1"),"utf-8");

       注:代碼也可以爲:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"utf-8"));其中rst爲返回的 resultset,ISO-8859-1爲mysql默認的編碼方式,代碼的目的是把以ISO-8859-1的編碼轉換爲gb2312編碼方式,這樣強 制轉換,可以解決一部分問題,如果結合方法一,應該可以解決中文亂碼問題。

      這種感覺很麻煩。

方法四:在tomcat conf 裏面的web.xml裏面更改:

      <filter>  
            <filter-name>UTFEncoding</filter-name>  
            <filter-class>com.founder.chenph.Util.EncodingFilter_UTF8</filter-class>  
            <init-param>  
                 <param-name>encoding</param-name>  
                 <param-value>UTF-8</param-value>  
            </init-param>   
      </filter>   
      <filter-mapping>  
           <filter-name>UTFEncoding</filter-name>  
           <url-pattern>*.jsp</url-pattern>   
       </filter-mapping>  
      <filter-mapping>  
          <filter-name>UTFEncoding</filter-name>  
          <url-pattern>*.do</url-pattern>  
      </filter-mapping>

      應該可以從根本解決吧,不過我沒試過這種方法(試想:如果不是自己的服務器,那怎麼能修改這個呢)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章