mysql的字符集和字符序:
    字符序:字符序(Collation)是指在同一字符集内字符之间的比较规则
    一个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation)

mysql的字符集和字符序有四个级别的默认设置:服务器级,数据库级,数据表级,字段级

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中的字符集转换过程:
            1.MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection
            2.进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下
                   - 使用每个数据字段的CHARACTER SET设定值
                   - 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准)
                   - 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值
                   - 若上述值不存在,则使用character_set_server设定值
            3.将操作结果从内部操作字符集转换为character_set_results

检测字符集问题的命令;
                SHOW CHARACTER SET;
                SHOW COLLATION;
                SHOW VARIABLES LIKE ‘character%’;
                SHOW VARIABLES LIKE ‘collation%’;
                SQL函数HEX、LENGTH、CHAR_LENGTH
                SQL函数CHARSET、COLLATION

注意事项:
            1.my.cnf中的default_character_set设置只影响mysql命令连接服务器时的连接字符集,不会对使用libmysqlclient库
            的应用程序产生任何作用
            2.对字段进行的SQL操作通常都是以内部操作字符集来进行的,不受连接字符集设置的影响

总结:
            mysql的字符集可以细化到一个库,一张表,一列.但是一般是使用默认的设置
                1.编译mysql时,指定了一个默认的字符集,这个字符集是latin1
                2.安装mysql时,可以在配置文件中指定一个默认的字符集,如果没有指定,这个值继承编译时的字符集
                3.启动mysqld时,可以使用character_set_server来指定默认的字符集,如果没有指定就继承配置文件中的配置
                4.安装mysql时选择多语言支持,在程序安装时会自动将配置设置为UTF-8

默认情况下的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;

设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,存入数据库的仍然是乱码.那connection连接层上可能出了问题
            解决方法是在发送查询前执行一下下面这句:SET NAMES 'utf8';它相当于下面的三句指令:
                SET character_set_client = utf8;
                SET character_set_results = utf8;
                SET character_set_connection = utf8;

自己周末放假没事学习的心得,如有不对请指出.谢谢!

mysql字符集和字符排序的更多相关文章

  1. 字符集和字符编码(Charset & Encoding)

    字符集和字符编码(Charset & Encoding)[转] 1.基础知识 计算机中储存的信息都是用二进制数表示的:而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按 ...

  2. 【转】字符集和字符编码(Charset & Encoding)

    相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"."�????????"?还记得HTTP中的Accept-Charset.Accept ...

  3. 转:字符集和字符编码(Charset & Encoding)

    转自:http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html ——每个软件开发人员应该无条件掌握的知识! ——Unicode伟大的创 ...

  4. [MySQL] 字符集和排序方式

    字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内 ...

  5. 关于mysql中字符集和排序规则说明

    文章转自 http://blog.csdn.net/smallSBoy/article/details/52997138 数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set ...

  6. MySQL数据库字符集和排序规则的四个级别

    MySQL数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-server该 ...

  7. mysql 批量修改 表字段/表/数据库 字符集和排序规则

    今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是   表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...

  8. 【mysql】 数据库字符集和排序规则

    库的字符集影响表和字段的字符集 数据库字符集 >表的字符集 > 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的 ...

  9. mysql字符集和排序规则

    1.关于字符集和排序规则所为字符集,就是用来定义字符在数据库中的编码的集合.常见的字符集有:utf8(支持中文)和AccIS(不支持中文) 数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规 ...

随机推荐

  1. 用资源管理器右键编译 Visual Studio 解决方案文件

    每次改动 VC 工程之后都要重新编译,每次 VS 又会生成调试数据库文件,很费时间,于是研究了一下如何在资源管理器中直接编译,还真发现了解决办法. 以下是适用 Visual Studio 2008 的 ...

  2. C#编程(三)

    原文链接:http://blog.csdn.net/shanyongxu/article/details/46398713 C#中的常量 定义常量所需要的关键字:const,语法结果:const 变量 ...

  3. .NET:CLR via C# Manifest

    An assembly is a collection of one or more files containing type definitions and resource files. One ...

  4. Juce源代码分析(一)Juce的优势

    为什么学习Juce JUCE (Jules' Utility Class Extensions)是由Raw MaterialSoftware公布的一套基于c++的跨平台应用程序框架类库(Windows ...

  5. [java web 入门](一)MyEclipse & HelloWorld 记录

    第一部,下载安装MyEclipse for mac. http://downloads.myeclipseide.com/downloads/products/eworkbench/2014/inst ...

  6. Lambda与委托

    Lambda 表达式是一个可用于创建委托或表达式树类型的匿名函数. 通过使用 lambda 表达式,可以可作为参数 或 返回为函数调用值的本地函数.Lambda 表达式对于编写 LINQ 查询表达式特 ...

  7. Unity3d-Particle System 5.x系统的学习(四)

    Unity3d-Particle System 5.x系统的学习(四) 今天,我们来聊聊unity5.x的粒子系统和unity4.x粒子系统的区别. 我大致看了下,区别还是蛮多的,但是总体的粒子制作思 ...

  8. Expectation Maximization-EM(期望最大化)-算法以及源码

    在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable).最大期望经常用在机器学 ...

  9. Maintenance Plans(维护计划)详解【转】

    最近试用了下 Sql Server 2008 的    Maintenance Plans( 维护计划 ),感觉很不错很不错.一贯的延续了微软的风格,图形化界面操作,保准你掌握了这个,就能成为半个DB ...

  10. 如何在Windows 7 或Vista中修改MTU

    Windows操作系统使用Maximum Transmission Unit (MTU) 来确定在下面的网络层上可以传输的协议数据包(protocol data packet)的最大尺寸. MTU参数 ...