MySQL数据库使用中文乱码的解决



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不区分大小写,cicase insensitive的缩写,即大小写不敏感。

utf8_general_cs区分大小写,cscase sensitive的缩写,即大小写敏感。

 

 

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/80798745