03_MySQL中文乱码处理_01_MySQl数据库字符集知识

【MySql数据库常见字符集介绍】

  在互联网环境中,使用MySql时常用的字符集有:

 

【如何选择合适的字符集】

  1.如果处理各种各样的文字,发布到不同语言的国家地区,应选Unicode字符集,对MySQL来说就是UTF-8(每个汉字3字节),如果应用需要处理英文,仅少量汉字使用UTF8更好(中英文混合)

   2.如果只需要支持中文,并且数据量很大,性能要求也较高,可选择GBK(定长:每个汉字占双字节,英文也占双字节),如果需要大量运算,如:比较排序,定长字符集,更快,性能更高。

  3.处理移动互联网业务,可能需要utf8mb4字符集。

 

 【查看当前MySQL系统支持的字符集】

使用“ show character set; ”来查看:

查看当前MySQL的字符集设置情况

使用" show variables like 'character_set%' "

| Variable_name                  |      Value    |

| character_set_client             |      utf8      |----------客户端字符集

| character_set_connection      |      utf8      |----------连接字符集

| character_set_database        |      utf8      |----------数据库字符集,配置文件指定或建库建表指定

| character_set_filesystem      |     binary    |----------

| character_set_results           |       utf8     |----------返回结果字符集

| character_set_server           |     latin1     |---------服务器字符集,配置文件指定或建库建表指定

| character_set_system          |     utf8        |


【使用"set names ****"解决乱码问题】

我们先在MySQL默认创建的test数据库中建立一个"user"表

然后我们来为user表添加一些数据:

会发现,插入英文都正常,但是一旦插入中文会出现“ Incorrect string value:"\xD5\xC5\xC8\xFD" for column 'name' at row 1 ”的错误。

我们先查看一下其数据库test的字符编码,默认是Latin1编码的

再查看一下表user的字符编码:同样是latin编码

对应于数据库和表均为latin1编码的情况,如何可以插入中文数据呢?如下:

使用"set names latin1;"设置编码,然后插入中文字段即可。

接下来查询一下,关闭cmd,重新打开一个cmd重新登录,进行查询操作。

发现查询出来又是乱码,我们再处理一下,

 

于是可以得出,要根据被查询的数据库和表的本身的字符编码来进行对应的" set names  **** "进行处理。

 再来看看"set names ****"的具体作用:

先看下数据库test的默认情况下的字符集设置情况:

使用“set names utf8;” 再看下结果:

 

 

posted @ 2016-08-19 14:01  HigginCui  阅读(494)  评论(0编辑  收藏  举报