qileilove

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

          MySql修改數據庫編碼為UTF8

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

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

            我們遵循的標準是,數據庫,表,字段和頁面或文本的編碼要統一起來

            我們可以通過命令查看數據庫當前編碼:

            mysql> SHOW VARIABLES LIKE 'character%';

            發現很多對應的都是 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%'; 你可以看到全變為 utf8 。

            但是,這只是一種假象

            此種方式只在當前狀態下有效,當重啟數據庫服務后失效。

            所以如果想要不出現亂碼只有修改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,執行

            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   交互時候仍然會出現亂碼。

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

            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');

            在執行CRUD操作前先執行一下

            mysql_query("set names utf8");

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

            連接數據庫設置編碼

            jdbc:mysql://地址:3306/數據庫名?characterEncoding=utf8

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

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

            對應mysql數據庫中的編碼utf8;gbk;gb2312;latin1


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

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 马公市| 南皮县| 武城县| 休宁县| 渑池县| 高邑县| 巩义市| 和田市| 新巴尔虎右旗| 武宁县| 龙陵县| 平安县| 通辽市| 抚州市| 光山县| 洪雅县| 土默特左旗| 且末县| 揭东县| 泸溪县| 宁波市| 宣化县| 紫云| 大竹县| 宁海县| 通渭县| 孙吴县| 耿马| 沂源县| 旺苍县| 吴江市| 梓潼县| 定兴县| 梁平县| 英吉沙县| 门头沟区| 平和县| 濮阳县| 衡阳县| 北海市| 岑巩县|