qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          MySql修改數(shù)據(jù)庫編碼為UTF8

           mysql 創(chuàng)建 數(shù)據(jù)庫時指定編碼很重要,很多開發(fā)者都使用了默認編碼,亂碼問題可是防不勝防。制定數(shù)據(jù)庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。

            網頁數(shù)據(jù)一般采用UTF8編碼,而數(shù)據(jù)庫默認為latin 。我們可以通過修改數(shù)據(jù)庫默認編碼方式為UTF8來減少數(shù)據(jù)庫創(chuàng)建時的設置,也能最大限度的避免因粗心造成的亂碼問題。

            我們遵循的標準是,數(shù)據(jù)庫,表,字段和頁面或文本的編碼要統(tǒng)一起來

            我們可以通過命令查看數(shù)據(jù)庫當前編碼:

            mysql> SHOW VARIABLES LIKE 'character%';

            發(fā)現(xiàn)很多對應的都是 latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。

            第一階段:

            mysql設置編碼命令

          SET character_set_client = utf8;
          SET character_set_connection = utf8;
          SET character_set_database = utf8;
          SET character_set_results = utf8;
          SET character_set_server = utf8;

            然后 mysql> SHOW VARIABLES LIKE 'character%'; 你可以看到全變?yōu)?utf8 。

            但是,這只是一種假象

            此種方式只在當前狀態(tài)下有效,當重啟數(shù)據(jù)庫服務后失效。

            所以如果想要不出現(xiàn)亂碼只有修改my.ini文件,

            從my.ini下手(標簽下沒有的添加,有的修改)

            [client]
            default-character-set=utf8
            [mysql]
            default-character-set=utf8
            [mysqld]
            default-character-set=utf8

            以上3個section都要加default-character-set=utf8,平時我們可能只加了mysqld一項。

            然后重啟mysql,執(zhí)行

            mysql> SHOW VARIABLES LIKE 'character%';

            確保所有的Value項都是utf8即可。

            但是可惡的事情又來了,

            |character_set_client      | utf8                                  |
            | character_set_connection | utf8                                  |
            | character_set_database   | utf8                                  |
            | character_set_filesystem | binary                                |
            | character_set_results    | utf8                                  |
            | character_set_server     | latin1                                |
            | character_set_system     | utf8

            注意  該配置| character_set_server     | latin1 無法設置成UTF8   交互時候仍然會出現(xiàn)亂碼。

           第二階段:找到下面這東東

            X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe

            重新啟動設置,將默認編碼設置為utf8.這樣就能達到我們所要的效果了。

            mysql> SHOW VARIABLES LIKE 'character%';

            +--------------------------+---------------------------------------------------------+
            | 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       | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
            +--------------------------+---------------------------------------------------------+

            8 rows in set

            另外注意事項:

            1、建表時加utf8,表字段的Collation可加可不加,不加時默認是utf8_general_ci了。

          CREATE TABLE `tablename4` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `varchar1` varchar(255) DEFAULT NULL,
          `varbinary1` varbinary(255) DEFAULT NULL,
          PRIMARY KEY (`id`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8

            2、網頁xxx.php/jsp保存時選擇utf8編碼,頁頭最好加上

            header('conten-type:text/html;charset=utf-8');

            在執(zhí)行CRUD操作前先執(zhí)行一下

            mysql_query("set names utf8");

            -------------------------

            連接數(shù)據(jù)庫設置編碼

            jdbc:mysql://地址:3306/數(shù)據(jù)庫名?characterEncoding=utf8

            -------------------------

            java中的常用編碼UTF-8;GBK;GB2312;ISO-8859-1;

            對應mysql數(shù)據(jù)庫中的編碼utf8;gbk;gb2312;latin1


          posted on 2013-06-14 10:43 順其自然EVO 閱讀(27240) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金乡县| 中西区| 延津县| 庆城县| 沽源县| 江口县| 纳雍县| 栖霞市| 大方县| 射阳县| 甘肃省| 梅河口市| 崇阳县| 彭山县| 酉阳| 新平| 柏乡县| 浮山县| 海兴县| 华池县| 铅山县| 射阳县| 军事| 得荣县| 通河县| 木里| 沂源县| 凉城县| 株洲县| 敖汉旗| 邛崃市| 潞城市| 济阳县| 剑河县| 寻甸| 西乌珠穆沁旗| 扎赉特旗| 洞口县| 平塘县| 西乡县| 定州市|