澳门在线威尼斯官方 > 电脑数据库 > Mysql字符集设置,mysql字符集和字符排序

原标题:Mysql字符集设置,mysql字符集和字符排序

浏览次数:139 时间:2019-09-14

mysql的字符集和字符序:
    字符序:字符序(Collation)是指在同一字符集内字符之间的相比准绳
    八个字符序独一对应一种字符集,但二个字符集能够对应四种字符序,当中有二个是暗中认可字符序(Default Collation)

From: 博客园 Johney
多年来,在品种组采用的mysql数据库中,插入数据出现乱码,关于那几个主题素材做了下计算,我们从最焦点的地方提及,到不当产生的深档次原因和解决办法。

    mysql的字符集和字符序有八个级其他暗许设置:服务器级,数据库级,数据表级,字段级

基本概念

    mysql中的字符序的命名依照正规,以字符序对应的字符集名称最初.以_ci(大小写不灵动),_cs(大小写敏感)大概_bin(按编码值相比较)
        例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的

• 字符(Character)是指人类语言中幽微的表义符号。举个例子’A'、’B'等;
• 给定一层层字符,对种种字符赋予几个数值,用数值来表示对应的字符,这一数值正是字符的编码(Encoding)。举例,大家给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码;
• 给定一层层字符并予以对应的编码后,全部那几个字符和编码对组合的联谊正是字符集(Character Set)。比方,给定字符列表为{’A',’B'}时,{’A'=>0, ‘B’=>1}就是三个字符集;
• 字符序(Collation)是指在同一字符集内字符之间的比较法则;
• 分明字符序后,技艺在一个字符集上定义什么是等价的字符,以及字符之间的尺寸关系;
• 每一个字符序独一对应一种字符集,但二个字符集能够对应各个字符序,其中有一个是默许字符序(Default Collation);
• MySQL中的字符序名称遵循命名惯例:以字符序对应的字符集名称初步;以_ci(表示大小写不灵活)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。比方:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;

    mysql字符集设置:
        系统变量:
            – character_set_server:私下认可的个中操作字符集
            – character_set_client:顾客端来源数据接纳的字符集
            – character_set_connection:连接层字符集
            – character_set_results:查询结果字符集
            – character_set_database:当前当选数据库的默许字符集
            – character_set_system:系统元数据(字段名等)字符集
            – 还有以collation_开头的同地点对应的变量,用来陈述字符序

MySQL字符集设置

        MySQL中的字符集调换进度:
            1.MySQL Server抽出诉求时将诉求数据从character_set_client转换为character_set_connection
            2.张开之中操作前将呼吁数据从character_set_connection调换为在那之中操作字符集,其规定方法如下
                   - 使用种种数据字段的CHARACTEENVISION SET设定值
                   - 若上述值不设有,则接纳相应数据表的DEFAULT CHARACTEENCORESET设定值(MySQL增加,非SQL标准)
                   - 若上述值一纸空文,则应用相应数据库的DEFAULT CHARACTE福睿斯SET设定值
                   - 若上述值不真实,则动用character_set_server设定值
            3.将操作结果从在这之中操作字符集转换为character_set_results

• 系统变量:
– character_set_server:暗中同意的当中操作字符集
– character_set_client:顾客端来源数据接纳的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前当选数据库的暗中同意字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_始于的同地点对应的变量,用来描述字符序。

        检查实验字符集难点的指令;
                SHOW CHARACTER SET;
                SHOW COLLATION;
                SHOW VARIABLES LIKE ‘character%’;
                SHOW VARIABLES LIKE ‘collation%’;
                SQL函数HEX、LENGTH、CHAR_LENGTH
                SQL函数CHARSET、COLLATION

• 用introducer内定文本字符串的字符集:
– 格式为:[_charset] ’string’ [COLLATE collation]
– 例如:
SELECT _latin1 ’string’;
SELECT _utf8 ‘你好’ COLLATE utf8_general_ci;
– 由introducer修饰的文本字符串在乞求进度中不通过多余的转码,间接转变为内部字符集管理。

        注意事项:
            1.my.cnf中的default_character_set设置只影响mysql命令连接服务器时的连天字符集,不会对选取libmysqlclient库
            的应用程序发生另外功用
            2.对字段举办的SQL操作平日都以以内部操作字符集来进展的,不受连接字符集设置的熏陶

MySQL中的字符集调换进程

        总结:
            mysql的字符集可以细化到二个库,一张表,一列.然而一般是行使暗中认可的设置
                1.编写翻译mysql时,钦定了二个暗许的字符集,这几个字符集是latin1
                2.装置mysql时,能够在布局文件中内定四个暗许的字符集,若无一些名,那一个值承继编写翻译时的字符集
                3.起动mysqld时,能够采纳character_set_server来钦定私下认可的字符集,若无一些名就雄起雌伏配置文件中的配置
                4.设置mysql时精选多语言匡助,在程序安装时会自动将安插安装为UTF-8

  1. MySQL Server收到央浼时将央求数据从character_set_client转换为character_set_connection;
  2. 进展之中操作前将呼吁数据从character_set_connection调换为当中操作字符集,其规定方法如下:
    • 选择种种数据字段的CHARACTECR-V SET设定值;
    • 若上述值空中楼阁,则使用相应数据表的DEFAULT CHARACTE冠道SET设定值(MySQL扩大,非SQL标准);
    • 若上述值空中楼阁,则动用相应数据库的DEFAULT CHARACTE传祺 SET设定值;
    • 若上述值不真实,则应用character_set_server设定值。

            暗中同意情形下的mysql默许字符集是latin1

        修改暗中同意字符集:
            1.最简便的修改章程:
                在mysql的布局文件中加入default-character-set = utf8
                                    character_set_server = utf8
                    修改完后重启服务器
            2.在线修改字符集
                     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;

  1. 将操作结果从里边操作字符集转变为character_set_results。

本文由澳门在线威尼斯官方发布于电脑数据库,转载请注明出处:Mysql字符集设置,mysql字符集和字符排序

关键词:

上一篇:没有了

下一篇:没有了