Mysql数据中文乱码问题处理

MYSQL数据库中的字符集设置

在创建数据库和数据表的时候,可以选择对应字符编码方式,如utf8,gbk,gb2312等等。也可以在后面修改表的Collation配置。

所以数据表的Collation配置必须能够表示表中的中文字符,这是最基本的要求。然后字符必须是使用该Collation兼容的字符集来编码的,这样才能正常显示和被mysql处理。

字符集配置变量

可以通过如下命令查看字符集变量值:

show variables like 'char%';

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	D:\HwsApacheMaster\mysql\share\charsets\

SHOW VARIABLES LIKE 'collation%';

# Variable_name, Value
collation_connection, utf8_general_ci
collation_database, utf8_general_ci
collation_server, utf8_general_ci

这些变量的含义和作用,参见官方文档解释: Connection Character Sets and Collations

中文乱码的基本原因:

  • character_set_client:客户端的字符集
  • character_set_results:结果字符集
  • character_set_connection:连接字符集

这三个系统参数的作用:

  • 信息输入路径: client--connection--server--database (数据传送方向从左到右,server负责解释和转换)
  • 信息输出路径: database--server--connection--results (数据传送方向从左到右,server负责转换和输出)

故这几个系统参数的值须相同,不然以不同的编码方式传送数据,若编码方式不兼容,则容易造成乱码的问题。

客户端通过如下类似命令可以修改上述三个参数的字符集值:

set names gb2312;

但是该命令无法修改character_set_server变量的值,因此需要注意是否匹配一致。

转载于:https://my.oschina.net/shelllife/blog/1830184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值