MySQL字符編碼解決亂碼問題

這幾天查找了不少關於mysql對中文字符編碼的處理,讀了各類零散的文章,最後作了全面的總結,現和你們分享:html

字符編碼
MySQL字符編碼 GBK、GB23十二、UTF8區別:http://kongjian.baidu.com/wangzhe1945/blog/item/4a69226d4a095cf0421694e1.html
1.系統編碼
查看系統編碼:mysql> show variables like '%character%'; 
            mysql> show variables like '%collation%';
改變系統編碼:修改my.cnf(/etc/my.cnf)中默認的編碼選項[mysqld]下添加default-charcter-set=utf8  mysql 5.5以上版本換成了character-set-server=utf8 從新啓動mysql
   命令形式   mysql> SET NAMES 'utf8'; 從新啓動mysql的時候全部的設置將失效

2.數據庫編碼
查看數據庫編碼: mysql> show create database db_name;
修改數據庫編碼: mysql> ALTER DATABASE db_name ####這裏修改整個數據庫的編碼
               CHARACTER SET utf8
                    DEFAULT CHARACTER SET utf8
                    COLLATE utf8_general_ci
                    DEFAULT COLLATE utf8_general_ci;
在在建數據庫的時候指定編碼:
        mysql> CREATE DATABASE db_name
               CHARACTER SET utf8
               DEFAULT CHARACTER SET utf8
               COLLATE utf8_general_ci
               DEFAULT COLLATE utf8_general_ci ;
3.數據庫表和字段編碼
查看數據庫表和字段編碼: mysql> show create table table_name;
修改數據庫表編碼: mysql> ALTER TABLE table_name DEFAULT CHARACTER SET utf8;
修改字段編碼: mysql> ALTER TABLE `table_name` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL             該命令就是將MYSQL數據庫table_name表中 dd的字段編碼改成utf8

4.命令行下插入漢字時指定編碼:mysql> set names utf8;   有時候這一句很關鍵!
                mysql> insert into test(name) values('王東偉');mysql

總之,無論採用那一種編碼方式,只要作到徹底統一將能達到相應的效果。sql

相關文章
相關標籤/搜索