美文网首页
MySQL乱码问题

MySQL乱码问题

作者: 笑笑东风 | 来源:发表于2019-02-13 22:21 被阅读0次

MySQL字符集参数


character_set_client: 表示客户端请求数据的字符集
character_set_connection:表示客户端连接到数据库后传输使用的字符集
character_set_database:默认数据库的字符集,如果创建数据库时没有指定字符集,则使用该默认字符集
character_set_filesystem:在操作系统层次上存放文件使用的字符集,默认为二进制
character_set_results:结果集使用的字符集
character_set_server:服务器使用的默认字符集
character_set_system:为存储系统元数据信息使用的字符集,总是utf8


MySQL参数使用


在客户端与MYSQL服务器建立连接后,执行INSERT操作并返回新插入:
1>MYSQL Client使用character_set_client指定的字符集来编码请求数据并发送给MYSQL服务器;
2>MYSQL服务器接收到客户端发送来的请求数据,将数据按照character_set_connection指定的字符集进行解码;
3>MYSQL服务器执行插入请求,将步骤2中解码的数据根据对应的列的字符集进行编码,然后插入数据,写入到文件中;
4>MYSQL服务器执行查询请求,将数据从文件中读取出来,按照对应列的字符集进行解码;
5>MYSQL服务器将查询结果按照character_set_results进行编码,返回给MYSQL Client;

为避免数据库乱码问题,应该保证客户端编码/服务器character_set_client和对于表上字段的charset使用相同的编码方式。


影响到字符编码的设置


Session settings
-->character_set_server
-->character_set_client
-->character_set_connection
-->character_set_database
-->character_set_result
Schema level defaults
Table level defaults
Column charsets

数据库级别的字符集信息使用db.opt来存放字符集和校验字符集的信息,当该数据库下定义表时未定义字符集,将使用数据库的字符集。


SET NAMES命令

SET NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}
This statement sets the three session system variables character_set_client, character_set_connection, and character_set_results to the given character set.
Setting character_set_connection to charset_name also sets collation_connection to the default collation for charset_name.

SET NAMES x相当于执行下面三条语句:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

If you are using the mysql client with auto-reconnect enabled (which is not recommended), it is preferable to use the charset command rather than SET NAMES.
The charset command issues a SET NAMES statement, and also changes the default character set that is used if mysql reconnects after the connection has dropped.


参考:
http://blog.csdn.net/y_h_t/article/details/17994335
https://dev.mysql.com/doc/refman/5.7/en/set-names.html

相关文章

  • MySQL导出CSV文件

    最近接触到mysql比较多,遇到mysql文件导出csv文件,存在格式问题和中文乱码问题,以此记录 中文乱码问题 ...

  • 【MySQL实战02】CentOS 7 下修改 MySQL 字符

    乱码问题: 由于 MySQL 编码原因会导致数据库出现乱码的问题。 解决办法: 修改 MySQL 数据库的字符编码...

  • MySQL5.7的初始安装问题

    MySQL5.7 解决利用sqoop导入MySQL中文乱码的问题 sudo vim /etc/mysql/mysq...

  • 数据库有关的问题

    1:mysql数据库出现的乱码问题:MySQL****会出现中文乱码的原因不外乎下列几点:1.server本身设定...

  • MySQL乱码问题

    MySQL的乱码问题,百度上看到很多。 其中有一种是在`Navicat`里面打开时没乱码问题的,只有在命令行下才会...

  • mysql 乱码问题

    作为一个开发人员,mysql乱码想必是一个很常见的问题,那么如何去解决呢? 首先,问题有可能出现在数据库上面,my...

  • mysql 乱码问题

    默认mysql是latin1 需要在my.cnf character_set_server=utf8 万一不幸之前...

  • mysql乱码问题

    执行sql语句 方法1,修改字符编码 方法2,修改字符编码 【终极大招】

  • MySQL乱码问题

    MySQL字符集参数 MySQL参数使用 影响到字符编码的设置 数据库级别的字符集信息使用db.opt来存放字符集...

  • 「MySQL」文章收藏

    一、MySQL系统管理相关文章 Mysql5.7修改默认密码 MySQL中文乱码问题 MySQL远程连接 二、数据...

网友评论

      本文标题:MySQL乱码问题

      本文链接:https://www.haomeiwen.com/subject/zcmjeqtx.html