utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
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的区别相关推荐
- mysql general bin区别_MySQL_编码utf8_bin和utf8_general_ci的区别
编码区别 在mysql中存在着各种utf8编码格式,如下(新建数据库时一般选用utf8_general_ci就可以): utf8_bin:将字符串中的每一个字符用二进制数据存储,区分大小写(在二进制中 ...
- 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将字符串中的每一个字符用二进制数据存储 ...
- mysql中engine是什么意思_mysql中engine=innodb和engine=myisam的区别
最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...
- utf8和utf8mb4的区别
1. 基础知识 1.1 bit , byte , word 字 word 字节 byte (B) 位 bit (b) 1.2 单位换算 1字节 = 8位(1 byte = 8bit) ...
- MySQL数据库字符集和整理
MySQL数据库字符集和整理(2009-11-20 22:23:37) mysql数据库 it 其实这个表在MySQL数据库中通过phpMyAdmin就能看到,icech只是把表格整理了一下方便 ...
- php过滤特殊字符mysql攻击_php – MySQL在特殊字符处切断字符串
我正在尝试使用 PHP将远程POST数据(iSnare发送的文章)插入MySQL.数据来自远程POST发件人,我可以将其写入纯文本文件而不会出现问题. 不幸的是,当它将它插入MySQL时,MySQL会 ...
- 数据库常用操作(未完待续)
1.数据库建立在计算机上的存储设备上,按照数据结构来组织.存储和管理数据,可以对其进行操作,不仅仅是文本,也可以是图片等. 2.特点: - 数据共享 - 减少冗余 - 数据独立 - 数据视线集中控制 ...
- 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 ...
- navicat的字符集和排序规则
1.上图 2.解释 (1).字符集一般选择 utf-8或者gbk (2).排序规则的选择需要注意的是,utf8_general_ci.utf8_general_cs.utf8_bin的区别,ci全称为 ...
- navicat中选择utf-8时的困惑
1.上图 2.解释 (1).字符集一般选择 utf-8或者gbk (2).排序规则的选择需要注意的是,utf8_general_ci.utf8_general_cs.utf8_bin的区别,ci全称为 ...
最新文章
- 解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
- python3.7安装turtle步骤-Python怎么引入turtle
- python爬虫实例-Python爬虫原理与python爬虫实例大全
- linux ftp 登录慢,linux中vsftpd登录,上传下载文件慢解决办法linux操作系统 -电脑资料...
- 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
- 国务院:光伏发电指标开始向东北倾斜
- android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?
- vue样式初始化_Vue 中的样式绑定
- 449.序列化和反序列化二叉搜索树
- 基于滑模变结构的倒立摆控制系统matlab仿真
- 计算机网口在哪看,联想电脑网线接口在哪
- Android 最常用的设计模式十 安卓源码分析——策略模式(Strategy)
- Java全栈工程师(自学)
- PTC Onshape 的两个核心弱点
- 蹩脚的Access分页语句
- 《石器时代》《魔力宝贝》图像压缩格式的破解
- 人生若只如初见 何事秋风悲画扇
- 什么是IDaaS?IDaaS有什么应用意义?
- 《Python语言程序设计基础》——读书笔记
- 智能wifi小车-RGB三色LED灯驱动
热门文章
- SQL JOB 调用 SSIS package 权限问题
- Win8.1 操作系统中无法打开IE浏览器。
- Fancybox—Fancybox的API和配置选项说明
- maven项目添加新dependency jar后本地可正常运行,但打包后加载不上
- 时间复杂度与空间复杂度小结
- php+不要科学记数,php怎么设置不用科学计数法?
- linux tty 软件包,Linux TTY framework(2)_软件架构
- php+模版取余,PHP取余函数介绍MOD(x,y)与x%y_php技巧
- pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
- 平分七框梨java_php编程- php算法 - 平分七框鱼