MySQL数据库使用中文乱码的解决
从cmd进入MySQL
打开cmd,输入 mysql -u root -p按回车键运行
也可打开WindowsPowerShell(管理员)输入 mysql -u root -p按回车键运行
注:若报错,需要设置Path环境变量:进入到MySQL的安装目录,进入bin文件夹。复制一下路径,把刚才复制的路径粘贴到Path变量里面(具体过程略)。
查看各层次的字符集编码
SHOW VARIABLES LIKE'character%';
其中,character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
参见上图我这里已经将字符集(characterset)设置成utf8, 不用修改了。若默认字符集是latin1.,就不支持中文,这需要如下处理:
那就是修改mysql默认的配置文件,把它的字符集修改成能够使用中文字符的UTF8,之后再重启MySQL可以生效了。
windows下重启mysql服务,只能先停止,再启动。
启动:输入 net stopmysql
停止:输入 netstart mysql
用修改mysql默认的配置文件设置字符集编码,方法如下:
找到安装mysql的目录找到 my.ini 文件;
使用记事本打开my.ini文件
搜索default-character-set 其值不是 utf8不是的话 改为utf8即可!
还有一种修改mysql默认字符集的方法,就是使用mysql的命令
使用mysql的命令修改mysql默认字符集,这样的命令来设置字符集的话,只是当前设置生效,下次重启mysql的时候就失效了还要重新设置。
mysql> SET character_set_client =utf8 ;
mysql> SET character_set_connection =utf8 ;
mysql> SET character_set_database =utf8 ;
mysql> SET character_set_results =utf8 ;
mysql> SET character_set_server =utf8 ;
mysql> SET collation_connection =utf8 ;
mysql> SET collation_database = utf8;
mysql> SET collation_server = utf8 ;
一般就算设置了表的mysql默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。如:
CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql中存在着各种utf8编码格式,如下
utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感