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

相关文章
相关标签/搜索