mysql字符集

作者: 逗比的一生 | 来源:发表于2020-09-01 16:10 被阅读0次

    1、概述
    MySQL字符集设置分为两类:
    1)创建对象的默认值。
    2)控制server和client端交互通信的配置。

    1.1 创建对象的默认值
    字符集合校对规则有4个级别的默认设置:
    1)服务器级别;
    2)数据库级别;
    3)表级别、列级别;
    4)连接级别。
    更低级别的设置会集成高级别的设置。
    这里有一个通用的规则:先为服务器或者数据库选择一个合理的字符集,然后根据不同的实际情况,让某个列选择自己的字符集。

    1.2 控制server和client端交互通信的配置
    大部分MySQL客户端都不具备同时支持多种字符集的能力,每次都只能使用一种字符集。
    客户和服务器之间的字符集转换工作是由如下几个MySQL系统变量控制的。
    1)character_set_server:MySQL服务端默认字符集。
    2)character_set_database:数据库默认字符集。
    3)character_set_client:MySQL服务端假定客户端发送的查询使用的字符集。
    4)character_set_connection:MySQL服务端接收客户端发布的查询请求后,将其转换为character_set_connection变量指定的字符集。
    5)character_set_results:MySQL服务端把结果集和错误信息转换为character_set_results指定的字符集,并发送给客户端。
    6)character_set_system:系统元数据(字段名等)字符集
    还有以collation_开头的同上面对应的变量,用来描述字符校对规则。
    注意事项:
    • my.ini中的default_character_set设置只影响mysql命令连接服务器时的连接字符集,不会对使用libmysqlclient库的应用程序产生任何作用!
    • 对字段进行的SQL函数操作通常都是以内部操作字符集进行的,不受连接字符集设置的影响。
    • SQL语句中的裸字符串会受到连接字符集或introducer设置的影响,对于比较之类的操作可能产生完全不同的结果,需要小心!

    1.3 默认情况下字符集选择规则
    (1)编译MySQL时,指定了一个默认的字符集,这个字符集是 latin1;
    (2)安装MySQL时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
    (3)启动mysqld时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时character_set_server被设定为这个默认的字符集;
    (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
    (5)当选定了一个数据库时,character_set_database被设定为这个数据库默认的字符集;
    (6)在这个数据库里创建一张表时,表默认的字符集被设定为character_set_database,也就是这个数据库默认的字符集;
    (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

    MySQL数据库乱码原因以及解决方案

    乱码终极解决方案
    1)首先要明确你的客户端时候何种编码格式,这是最重要的(IE6一般用utf8,命令行一般是gbk,一般程序是gb2312)
    2)确保你的数据库使用utf8格式,很简单,所有编码通吃。
    3)一定要保证connection字符集大于等于client字符集,不然就会信息丢失,比如: latin1 < gb2312 < gbk < utf8,若设置set character_set_client = gb2312,那么至少connection的字符集要大于等于gb2312,否则就会丢失信息
    4)以上三步做正确的话,那么所有中文都被正确地转换成utf8格式存储进了数据库,为了适应不同的浏览器,不同的客户端,你可以修改character_set_results来以不同的编码显示中文字体,由于utf8是大方向,因此web应用是我还是倾向于使用utf8格式显示中文的。

    原文连接:https://www.cnblogs.com/ljxt/p/11586513.html

    相关文章

      网友评论

        本文标题:mysql字符集

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