由于一真开发使用Oracle和SqlServer ,很少使用MySql,所以一直对MySql不是很了解,但却知道MySQL的乱码很出名,这几天使用Oracle突然感觉有点麻烦,要边过程的服务器,不爽,还是在自己机器上面爽!索性就试一下MySQL,感觉MySQL还挺好用的,随之而来的就是早已经预测到的乱码问题。花费了一晚上报的时间Google MySQL的筹码的解决方案。下面简单介绍一下,MySQL使用期间编码字符集之间的转化,因为有转化才出现的乱码。
首先我们使用net start mysql 命令启动MySQL服务,
登录MySQL [mysql –u root –p 输入密码]进入MySQL,打入如下命令:
show variables like ‘character%’; 执行会显示如下变量:
打入show variables like ‘collation%’; 会有如下显示:
上面显示的都是一些MySQL的系统变量。
服务器(server)的字符集和排序(collation)是被 character_set_server和 collation_server这两个系统变量的值決定 。
数据库的默认(default) 字符集(character set)和 排序(collation) 是被 character_set_database和 collation_database这两个系统变量system variables的值決定
想想"连接connection"是什么:是你连到服务器Server时作的事情。客户端Client通过这条连接发送SQL语句(statements),比如查询(queries),通过 connection到server, 服务器则送回回应,像是结果集合 result sets, 通过连接给客户端client,这导致了客户端连接client connections处理字符集和collation的一些问题。
下面来清楚几个问题?
1.当查询 离开客户端时 是什么字符集?
服务器读取character_set_client