• <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-后臺

            久久精品国产亚洲AV无码麻豆 | 日韩欧美亚洲综合久久| 久久免费香蕉视频| 欧美粉嫩小泬久久久久久久| 国产成人精品综合久久久久| 国产∨亚洲V天堂无码久久久| 久久国产精品一区| 久久这里只有精品18| 久久国产视频网| 日韩久久久久久中文人妻| 很黄很污的网站久久mimi色| 精品伊人久久大线蕉色首页| 精品一久久香蕉国产线看播放| 亚洲中文字幕无码久久精品1 | 国产三级精品久久| 伊人久久大香线蕉综合影院首页| 99久久免费只有精品国产| 久久久久亚洲AV成人网人人网站| 久久九九全国免费| 久久久国产乱子伦精品作者| 久久久久无码精品国产app| 久久这里只有精品久久| 奇米综合四色77777久久| 三级三级久久三级久久| 一本久久综合亚洲鲁鲁五月天| 26uuu久久五月天| 一本久久久久久久| 久久99精品国产99久久| 久久99国产综合精品女同| 久久久久久国产精品无码下载 | 久久国产高清字幕中文| 一本色道久久综合亚洲精品| 亚洲七七久久精品中文国产| 亚洲国产天堂久久综合| 麻豆久久| 精品久久人人爽天天玩人人妻| 欧美粉嫩小泬久久久久久久| 色婷婷狠狠久久综合五月| 人妻少妇精品久久| 久久精品中文无码资源站| 久久九九兔免费精品6|