• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            在Java中解決MySQL5.0中文字符集問題全程詳細(xì)記錄

                 今天被MySQL的中文字符集問題弄得焦頭爛額,最終還是解決了.下面分享一下解決過程。
            在網(wǎng)上搜索了很多,網(wǎng)友也有很多精彩的帖子,
            但是每個人的情況不總是一樣,所以我覺得我下面的文字有存在的必要。
            裝了MySQL5.0后,系統(tǒng)默認(rèn)的字符集似乎是UTF8,但是不知道為什么就是不支持中文。
            下面的是我的痛苦的解決過程。
            將數(shù)據(jù)庫用character set 和 collate指定字符集為gbk,
            mysql> create database test2  DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
            Query OK, 1 row affected (0.00 sec)
            mysql> create table a(a text);
            Query OK, 0 rows affected (0.14 sec)
            插入的時候也用_gbk指定字符集,
            mysql> insert a values(_gbk'默認(rèn)數(shù)據(jù)庫的字符集和');
            Query OK, 1 row affected (0.05 sec)
            但是查詢的時候還是出現(xiàn)亂。
            mysql> select * from a;
            +--------------------------------+
            | a                              |
            +--------------------------------+
            | 榛樿鏁版嵁搴撶殑瀛楃闆嗗拰           |
            +--------------------------------+
            1 row in set (0.00 sec)
            mysql>
            好的,那么是不是創(chuàng)建表也要指定字符集呢?
            我們繼續(xù)測試:
            mysql> create table b(a text) DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
            Query OK, 0 rows affected (0.06 sec)
            mysql> insert b values(_gbk'默認(rèn)數(shù)據(jù)庫的字符集和');
            Query OK, 1 row affected (0.01 sec)
            mysql> select * from b;
            +--------------------------------+
            | a                              |
            +--------------------------------+
            | 榛樿鏁版嵁搴撶殑瀛楃闆嗗拰           |
            +--------------------------------+
            1 row in set (0.00 sec)
            mysql>
            同樣出現(xiàn)亂碼?
            我們不用_gbk指定字符集呢?
            mysql> insert b values('默認(rèn)數(shù)據(jù)庫的字符集和');
            ERROR 1406 (22001): Data too long for column 'a' at row 1
            mysql> insert a values('默認(rèn)數(shù)據(jù)庫的字符集和');
            ERROR 1406 (22001): Data too long for column 'a' at row 1
            這樣發(fā)現(xiàn)根本就插入不進數(shù)據(jù)。
            那么到底該怎么解決呢?
            運行下面的這幾行命令,就能看到正常的中文了:
            mysql> SET character_set_connection = gbk;
            Query OK, 0 rows affected (0.00 sec)
            mysql> SET character_set_database = gbk;
            Query OK, 0 rows affected (0.00 sec)
            mysql> SET character_set_results = gbk;
            Query OK, 0 rows affected (0.00 sec)
            mysql> SET character_set_server = gbk;
            Query OK, 0 rows affected (0.00 sec)
            mysql>
            mysql> SET collation_connection = gbk_bin;
            Query OK, 0 rows affected (0.00 sec)
            mysql> SET collation_database = gbk_bin;
            Query OK, 0 rows affected (0.00 sec)
            mysql> SET collation_server = gbk_bin;
            Query OK, 0 rows affected (0.00 sec)
            mysql>
            mysql> select * from a;
            +----------------------+
            | a                    |
            +----------------------+
            | 默認(rèn)數(shù)據(jù)庫的字符集和                  |
            +----------------------+
            1 row in set (0.00 sec)
            mysql> select * from b;
            +----------------------+
            | a                    |
            +----------------------+
            | 默認(rèn)數(shù)據(jù)庫的字符集和                  |
            +----------------------+
            1 row in set (0.00 sec)
            mysql>
            這樣設(shè)置之后,也可以正常插入中文了:
            mysql> insert into a values('當(dāng)然是聯(lián)系 java ');
            Query OK, 1 row affected (0.02 sec)
            mysql> select * from a;
            +----------------------+
            | a                    |
            +----------------------+
            | 默認(rèn)數(shù)據(jù)庫的字符集和                  |
            | 當(dāng)然是聯(lián)系 java              |
            +----------------------+
            2 rows in set (0.00 sec)
            mysql>
            但是如果重啟數(shù)據(jù)庫客戶端,那么還是不能正確顯示中文,
            最徹底的方法就是更改MySQL的配置文件。
            在MySQL5.0的安裝目錄找到my.ini文件,將其中以下兩行:
            default-character-set=utf8
            default-character-set=utf8
            改為:
            default-character-set=gbk
            default-character-set=gbk
            重啟MySQL服務(wù)器。
            重新連接:
            mysql> select * from a;
            +----------------------+
            | a                    |
            +----------------------+
            | 默認(rèn)數(shù)據(jù)庫的字符集和 |
            | 當(dāng)然是聯(lián)系 java      |
            +----------------------+
            2 rows in set (0.02 sec)
            現(xiàn)在好了,可以直接讀取中文字符了。
            看看插入中文字符情況:
            mysql> insert b values('看看插入中文字符情況:');
            mysql> insert b values('看看插入中文字符情況:');
            Query OK, 1 row affected (0.03 sec)
            mysql> select * from b;
            +------------------------+
            | a                      |
            +------------------------+
            | 默認(rèn)數(shù)據(jù)庫的字符集和   |
            | 看看插入中文字符情況: |
            +------------------------+
            2 rows in set (0.00 sec)
            mysql>
            下面再看看創(chuàng)建表的情況:
            mysql> create table c(a text);
            Query OK, 0 rows affected (0.06 sec)
            mysql> insert into c values();
            Query OK, 1 row affected (0.01 sec)
            mysql> insert into c values('下面再看看創(chuàng)建表的情況:');
            Query OK, 1 row affected (0.02 sec)
            mysql> select * from c;
            +--------------------------+
            | a                        |
            +--------------------------+
            | NULL                     |
            | 下面再看看創(chuàng)建表的情況: |
            +--------------------------+
            2 rows in set (0.00 sec)
            mysql>
            一切正常了。
            下面看看程序中的情況:
             

            package test;
            /**
            * 該程序用來測試JDBC和MySQL連接,然后插入中文字符到數(shù)據(jù)庫中。
            * 其中用到的表為:
            * CREATE TABLE MessageBoard (
            * ID int(10) unsigned NOT NULL default '0',
            * title varchar(255) NOT NULL default '',
            * content text NOT NULL,
            * author varchar(20) NOT NULL default '',
            * time datetime NOT NULL default '0000-00-00 00:00:00',
            * modifyTime datetime NOT NULL default '0000-00-00 00:00:00',
            * PRIMARY KEY (ID)
            * ) ;
            *
            */

            import java.sql.*;
            public class InsertChineseCharacterJDBC
            {
             static
             {
              try
              {
               //驅(qū)動和odbc不同

               Class.forName ( "org.gjt.mm.mysql.Driver" );
               System.out.println ( "success loading mysql Driver...." );
              } catch ( Exception e )
              {
               System.out.println ( "Error loading mysql Driver....." );
               e.printStackTrace ( );
              }
             }
             /**
              * @param args
              */

             public static void main ( String agrs[] )
             {
              try
              {
               //連接參數(shù)與Access不同

               String url = "jdbc:mysql://localhost/BohaoDB";
               //建立連接

               Connection con = DriverManager.getConnection ( url, "root", "011124" );
               //建立發(fā)送SQL命令的Statement對象

               Statement stmt = con.createStatement ( );
               //返回查詢結(jié)果

               int flag = stmt.executeUpdate ( "insert into MessageBoard(ID,title,content,author,time,modifyTime) values(1,'大家好!','我是新來,請多多關(guān)照!','zieckey','2007-01-28 20:03:50','2007-01-27 20:03:50');" );
               if ( 1==flag )
               {
                System.out.println ("插入中文字符到數(shù)據(jù)庫成功!");
               }else {
                System.out.println ("插入中文字符到數(shù)據(jù)庫失敗!");
               }
               ResultSet rs = stmt.executeQuery ( "select * from MessageBoard" );

               /**
                * 取出列屬性!
                */

               ResultSetMetaData md = rs.getMetaData ( );
               int col = md.getColumnCount ( );
               for ( int i = 1; i <= col; i++ )
               {
                System.out.println ( md.getColumnName ( i ) + "\t" );
               }
               /**
                * 取出列值!
                */

               while ( rs.next ( ) )
               {
                String strData = "";
                for ( int i = 1; i <= col; i++ )
                {
                 strData = strData + rs.getString ( i ) + "\t";
                }
                System.out.println ( strData );
               }
               //斷開Connection連接

               rs.close();
               stmt.close();
               con.close ( );
              } catch ( SQLException e )
              {
               e.printStackTrace ( );
              }
             }
            }

            運行輸出:
            success loading mysql Driver....
            插入中文字符到數(shù)據(jù)庫成功!
            ID
            title
            content
            author
            time
            modifyTime
            1 大家好! 我是新來,請多多關(guān)照! zieckey 2007-01-28 20:03:50.0 2007-01-27 20:03:50.0

            posted on 2009-06-23 13:22 肥仔 閱讀(546) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

            热re99久久6国产精品免费| 国产精品免费福利久久| 久久久久久青草大香综合精品| 国产精品九九久久免费视频 | 久久99精品久久久久婷婷| 久久精品成人国产午夜| 无码人妻少妇久久中文字幕| 久久精品人人做人人爽电影蜜月| 国产—久久香蕉国产线看观看| 热综合一本伊人久久精品| 99久久er这里只有精品18| 久久青青草原精品国产软件 | 伊人久久综合精品无码AV专区 | 国产精品99久久99久久久| 久久久久国产一级毛片高清板| 久久精品国产99久久久| 久久人人爽人人澡人人高潮AV| 国产午夜免费高清久久影院 | 久久天堂电影网| 久久中文字幕人妻熟av女| 好属妞这里只有精品久久| 国内精品伊人久久久久777| 亚洲国产成人久久一区久久| 久久亚洲欧美日本精品| 精品综合久久久久久888蜜芽| 久久人人爽人人爽AV片| 久久久久久青草大香综合精品| 久久这里只有精品久久| 久久久久久夜精品精品免费啦| 一本色道久久88综合日韩精品| 久久国产美女免费观看精品| 日本久久久久久中文字幕| 97久久国产亚洲精品超碰热| 久久综合久久自在自线精品自| 久久精品国产日本波多野结衣| 亚洲精品美女久久久久99小说| 尹人香蕉久久99天天拍| 精品国产乱码久久久久久人妻| 亚洲精品无码成人片久久| 久久婷婷五月综合97色一本一本| 97精品国产97久久久久久免费|