mysql编码

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:mysql编码

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、查看mysql相关编码

--查看mysql数据库所支持的编码
show character set;
--查看当前变量中的一些编码情况
show variables like 'character%';
--查看某个数据库的编码
SHOW CREATE DATABASE db_name;
--查看某个表的字符集
SHOW CREATE TABLE table_name;
SHOW TABLE STATUS LIKE 'table_name';

2、参数说明:
character_set_client:客户端来源数据使用的字符集
character_set_connection:连接层字符集
character_set_database:当前选中数据库的默认字符集
character_set_filesystem:文件保存格式
character_set_results:查询结果字符集
character_set_server:默认的内部操作字符集
character_set_system:系统元数据(字段名等)字符集
character_sets_dir:mysql编码文件放置位置
3、MySQL中的字符集转换过程
1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
• 使用每个数据字段的CHARACTER SET设定值;
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。
3. 将操作结果从内部操作字符集转换为character_set_results。
4、一些小技巧
1)通过使用set names utf8(gbk)等编码修改命令在database级别,可以实现修改
character_set_client、character_set_connection、character_set_results操作
2)要正常显示数据,要确保display的平台的编码和character_set_results中的编码一致,如:默认情况,win的dos中编码为gbk,linux的shell下编码为utf8,如果要使用同一个数据库能够都正常显示,需要使用set names utf8(gbk)等操作
3)MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾,例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;
5、my.cnf/my.ini中相关参数设置
default_character_set设置只影响mysql命令连接服务器时的连接字符集
init_connect=’SET NAMES utf8’非超级用户建立连接时执行set names utf8
init_connect=’set collation_connection=utf8_general_ci’
在[client] 中设置
default-character-set=utf8
影响下面三个参数
character_set_client
character_set_connection
character_set_results
在[mysqld]中设置
default-character-set=utf8
影响下面两个参数
character_set_database
character_set_server
这样mysql就可以基本上使用utf8编码工作了,如果客户端是gbk编码的,可以使用set names gbk进行临时修改

One thought on “mysql编码

  1. 在5.5版本中:default-character-set=utf8不能被使用,请使用
    character_set_client
    character_set_connection
    character_set_results
    character_set_database
    character_set_server
    等相关参数

发表评论

邮箱地址不会被公开。 必填项已用*标注

11 + 6 =