日期:2014-05-16  浏览次数:20484 次

mysql数据库字符集编码的查看与修改
在搭建产品demo的时候,开发者环境下往数据库同步数据时正常,但是其他使用者用同样程序及数据库初始化脚本搭建时,总是会出现入库中文为乱码的现象。这里的原因很可能就是数据库编码的问题。
下面的内容将介绍如何查看现在数据库的编码及如何修改:
1,查看编码:
命令:show variables like 'character_set_%'
结果,如:


2,修改已设定编码:
如对character_set_database修改编码
命令:set character_set_database = utf8
执行后,查看新编码内容为:

可见已成功将编码更换。

另外,有一种最简单的方式,通过修改mysql安装目录下的my.ini文件,将文件中
character_set_database = gbk
修改为
character_set_database = utf8
重启mysql服务即可。

因此,通过以上两个步骤,便可查看目前mysql内的各种编码格式,同时通过命令或修改配置文件还可以很轻松实现编码更换,用此来解决mysql数据库入库中文乱码问题。


以下内容是从网站获取的关于mysql字符集的问题,摘录在此,供参考学习:


MySQL的字符集支持(Character Set Support)有两个方面:

字符集(Character set)和排序方式(Collation)。

对于字符集的支持细化到四个层次:

服务器(server),数据库(database),数据表(table)和连接(connection)。

MySQL默认字符集

MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。

但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢? 

(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;

(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;

(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;

(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。