http://blog.csdn.net/flqljh/article/details/49834843

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

utf8_general_cs 区分大小写,如果用户名和邮箱用这个就会照成不良后果。

utf8_bin: compare strings by the binary value of each character in the string 将字符串每个字符串用二进制数据编译存储,区分大小写,而且可以存二进制的内容。

今天在创建新的数据库的时候,在“整理”选项选择的时候,通常就直接选择utf_bin ,但是有时候也用utf_general_ci,用了这么长时间,发现自己竟然不知道这两者到底有什么区别。

ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的。

bin 是二进制, a 和 A 会别区别对待。

例如你运行:

SELECT * FROM table WHERE txt = 'a'

那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以。

我们知道utf8下面还有很多 选项,我们没有必要去一一掌握,但是需要了解。

utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法,一些字符还是不能支持。

utf8_unicode_ci不能完全支持组合的记号。

utf8_general_ci是一个遗留的 校对规则,不支持扩展,它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用 utf8_unicode_ci的校对规则相比,比较正确性较差。

应用上的差别

1、对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

2、utf8_general_ci也适用与德语和法语,除了‘?’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

用一句话概况上面这段话:utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了。

总结:

1 大小写敏感

2 general 快  unicode 准确


自己的实践:

bin 对字符串严格的二进制编码进行校对,有时候会出现无法找到匹配的问题,考虑为某些不可见又存在的字符扰乱,导致一些莫名其妙的校对失败,所以我一般不使用,一般使用general

转载于:https://www.cnblogs.com/silyvin/p/9106688.html

utf8_general_ci、utf8_unicode_ci和utf8_bin的区别相关推荐

  1. mysql general bin区别_MySQL_编码utf8_bin和utf8_general_ci的区别

    编码区别 在mysql中存在着各种utf8编码格式,如下(新建数据库时一般选用utf8_general_ci就可以): utf8_bin:将字符串中的每一个字符用二进制数据存储,区分大小写(在二进制中 ...

  2. mysql _bin编码_mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别

    在mysql中存在着各种utf8编码格式,如下表: 1)utf8_bin 2)utf8_general_ci 3)utf8_general_cs utf8_bin将字符串中的每一个字符用二进制数据存储 ...

  3. mysql中engine是什么意思_mysql中engine=innodb和engine=myisam的区别

    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...

  4. utf8和utf8mb4的区别

    1. 基础知识 1.1 bit , byte , word 字     word 字节  byte (B) 位     bit (b) 1.2 单位换算 1字节 = 8位(1 byte = 8bit) ...

  5. MySQL数据库字符集和整理

    MySQL数据库字符集和整理(2009-11-20 22:23:37) mysql数据库 it    其实这个表在MySQL数据库中通过phpMyAdmin就能看到,icech只是把表格整理了一下方便 ...

  6. php过滤特殊字符mysql攻击_php – MySQL在特殊字符处切断字符串

    我正在尝试使用 PHP将远程POST数据(iSnare发送的文章)插入MySQL.数据来自远程POST发件人,我可以将其写入纯文本文件而不会出现问题. 不幸的是,当它将它插入MySQL时,MySQL会 ...

  7. 数据库常用操作(未完待续)

    1.数据库建立在计算机上的存储设备上,按照数据结构来组织.存储和管理数据,可以对其进行操作,不仅仅是文本,也可以是图片等. 2.特点: - 数据共享 - 减少冗余 - 数据独立 - 数据视线集中控制 ...

  8. Jeecg-Boot异常处理'jeecg-boot.QRTZ_LOCKS' doesn't exist

    Jeecg-Boot异常处理'jeecg-boot.QRTZ_LOCKS' doesn't exist 提示表不存在问题Table 'jeecg-boot.QRTZ_LOCKS' doesn't ex ...

  9. navicat的字符集和排序规则

    1.上图 2.解释 (1).字符集一般选择 utf-8或者gbk (2).排序规则的选择需要注意的是,utf8_general_ci.utf8_general_cs.utf8_bin的区别,ci全称为 ...

  10. navicat中选择utf-8时的困惑

    1.上图 2.解释 (1).字符集一般选择 utf-8或者gbk (2).排序规则的选择需要注意的是,utf8_general_ci.utf8_general_cs.utf8_bin的区别,ci全称为 ...

最新文章

  1. 解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
  2. python3.7安装turtle步骤-Python怎么引入turtle
  3. python爬虫实例-Python爬虫原理与python爬虫实例大全
  4. linux ftp 登录慢,linux中vsftpd登录,上传下载文件慢解决办法linux操作系统 -电脑资料...
  5. 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
  6. 国务院:光伏发电指标开始向东北倾斜
  7. android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?
  8. vue样式初始化_Vue 中的样式绑定
  9. 449.序列化和反序列化二叉搜索树
  10. 基于滑模变结构的倒立摆控制系统matlab仿真
  11. 计算机网口在哪看,联想电脑网线接口在哪
  12. Android 最常用的设计模式十 安卓源码分析——策略模式(Strategy)
  13. Java全栈工程师(自学)
  14. PTC Onshape 的两个核心弱点
  15. 蹩脚的Access分页语句
  16. 《石器时代》《魔力宝贝》图像压缩格式的破解
  17. 人生若只如初见 何事秋风悲画扇
  18. 什么是IDaaS?IDaaS有什么应用意义?
  19. 《Python语言程序设计基础》——读书笔记
  20. 智能wifi小车-RGB三色LED灯驱动

热门文章

  1. SQL JOB 调用 SSIS package 权限问题
  2. Win8.1 操作系统中无法打开IE浏览器。
  3. Fancybox—Fancybox的API和配置选项说明
  4. maven项目添加新dependency jar后本地可正常运行,但打包后加载不上
  5. 时间复杂度与空间复杂度小结
  6. php+不要科学记数,php怎么设置不用科学计数法?
  7. linux tty 软件包,Linux TTY framework(2)_软件架构
  8. php+模版取余,PHP取余函数介绍MOD(x,y)与x%y_php技巧
  9. pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
  10. 平分七框梨java_php编程- php算法 - 平分七框鱼