在向mysql-5.6.14-winx64插入中文记录时,出现乱码:
使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集。
以下是将latin1字符集的数据库修改成GBK字符集的数据库的过程。操作较为简单。下面就来简单的介绍Mysql字符变量和latin1转换到GBK的过程,大家可以根据自己实际情况,举一反三。
一、MySQL字符集设置
client | 为客户端使用的字符集。 |
connection | 为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置。 |
database | 为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。 |
results | 为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。 |
server | 为服务器安装时指定的默认字符集设定。 |
system | 为数据库系统使用的字符集设定。 |
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_results:查询结果字符集
– character_set_server:默认的内部操作字符集
– character_set_system:系统元数据(字段名等)字符集
二、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。
修改my.ini(只有修改配置文件,并重启服务器,才能永久生效)
[client]
no-beep
[mysql]
default-character-set=gbk
[mysqld]
init_connect = 'SET NAMES utf8'
character-set-server=gbk
#server---服务器
character-set-server=gbk
mysql服务的停止和启动命令:
net stop mysql
net start mysql
然后再次查看 当前数据库的相关编码集:
此时再次插入中文: