美文网首页
Mysql编码问题

Mysql编码问题

作者: SingleException | 来源:发表于2020-03-12 20:56 被阅读0次

    编码和比较规则

    • character_set_client 服务器解码请求时使用的字符集

    • character_set_connection 服务器处理请求时会把请求字符串从character_set_client转为character_set_connection

    • character_set_results 服务器向客户端返回数据时使用的字符集

    一般情况下要使用保持这三个变量的值和客户端使用的字符集相同。

    设置字符集一致,方法一:

    SET character_set_client = 字符集名; 
    
    SET character_set_connection = 字符集名;
    
    SET character_set_results = 字符集名; 
    

    方法二:

    SET NAMES 字符集名;

    另外,如果你想在启动客户端的时候就把character_set_clientcharacter_set_connectioncharacter_set_results这三个系统变量的值设置成一样的,那我们可以在启动客户端的时候指定一个叫default-character-set的启动选项,比如在配置文件里可以这么写:

    [client]
    default-character-set=utf8
    

    编码过程

    image.png
    • 客户端使用操作系统的字符集编码请求字符串,向服务器发送的是经过编码的一个字节串。

    • 服务器将客户端发送来的字节串采用character_set_client代表的字符集进行解码,将解码后的字符串再按照character_set_connection代表的字符集进行编码。

    • 如果character_set_connection代表的字符集和具体操作的列使用的字符集一致,则直接进行相应操作,否则的话需要将请求中的字符串从character_set_connection代表的字符集转换为具体操作的列使用的字符集之后再进行操作。

    • 将从某个列获取到的字节串从该列使用的字符集转换为character_set_results代表的字符集后发送到客户端。

    • 客户端使用操作系统的字符集解析收到的结果集字节串。

    相关文章

      网友评论

          本文标题:Mysql编码问题

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