qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

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

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

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

            我們遵循的標(biāo)準(zhǔn)是,數(shù)據(jù)庫(kù),表,字段和頁(yè)面或文本的編碼要統(tǒng)一起來(lái)

            我們可以通過(guò)命令查看數(shù)據(jù)庫(kù)當(dāng)前編碼:

            mysql> SHOW VARIABLES LIKE 'character%';

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

            第一階段:

            mysql設(shè)置編碼命令

          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 。

            但是,這只是一種假象

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

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

            從my.ini下手(標(biāo)簽下沒(méi)有的添加,有的修改)

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

            以上3個(gè)section都要加default-character-set=utf8,平時(shí)我們可能只加了mysqld一項(xiàng)。

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

            mysql> SHOW VARIABLES LIKE 'character%';

            確保所有的Value項(xiàng)都是utf8即可。

            但是可惡的事情又來(lái)了,

            |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 無(wú)法設(shè)置成UTF8   交互時(shí)候仍然會(huì)出現(xiàn)亂碼。

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

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

            重新啟動(dòng)設(shè)置,將默認(rèn)編碼設(shè)置為utf8.這樣就能達(dá)到我們所要的效果了。

            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

            另外注意事項(xiàng):

            1、建表時(shí)加utf8,表字段的Collation可加可不加,不加時(shí)默認(rèn)是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、網(wǎng)頁(yè)xxx.php/jsp保存時(shí)選擇utf8編碼,頁(yè)頭最好加上

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

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

            mysql_query("set names utf8");

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

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

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

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

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

            對(duì)應(yīng)mysql數(shù)據(jù)庫(kù)中的編碼utf8;gbk;gb2312;latin1


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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 斗六市| 常熟市| 垣曲县| 昭通市| 乌兰察布市| 卓尼县| 通榆县| 通城县| 二手房| 紫云| 林州市| 牡丹江市| 平利县| 永州市| 台中县| 手游| 周至县| 长宁区| 安达市| 克什克腾旗| 富顺县| 收藏| 庆阳市| 台湾省| 剑川县| 南岸区| 平南县| 永寿县| 太康县| 民县| 楚雄市| 闵行区| 澄迈县| 福州市| 榕江县| 安陆市| 连山| 永顺县| 甘德县| 曲阳县| 河池市|