MySQL中存在多种格式的utf8编码,其中最常见的两种为:

  1. utf8_bin
  2. utf8_general_ci

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写;
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感,为utf8默认编码。

示例:

 CREATE TABLE `t_bin` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; CREATE TABLE `t_ci` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; CREATE TABLE `t_default` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行以下语句:

 insert into t_bin values (1, 'Alex');
insert into t_bin values (2, 'alex'); insert into t_ci values (1, 'Alex');
insert into t_ci values (2, 'alex'); insert into t_default values (1, 'Alex');
insert into t_default values (2, 'alex');

结果如下:

 root@zow 11:13:44>insert into t_bin values (1, 'Alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:14>insert into t_bin values (2, 'alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:17>insert into t_ci values (1, 'Alex');
Query OK, 1 row affected (0.00 sec) root@zow 11:14:32>insert into t_ci values (2, 'alex');
ERROR 1062 (23000): Duplicate entry 'alex' for key 'uk_name'
root@zow 11:14:36>insert into t_default values (1, 'Alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:50>insert into t_default values (2, 'alex');
ERROR 1062 (23000): Duplicate entry 'alex' for key 'uk_name'

分析:

编码为utf8_bin时,Alex和alex被认为是两个不同的值,区分大小写;

编码为utf8_general_ci时,即默认的编码时,Alex和alex被认为是相同的值,不区分大小写。

所以在选择编码的时候应该注意区分。

最新文章

  1. Expert 诊断优化系列------------------你的CPU高么?
  2. Win8.1安装Visual Studio 2015提示需要KB2919355
  3. java常量池存放在哪里
  4. quick Cocos2dx lua 接anysdk
  5. PHP 小方法之 仿百度蜘蛛采集
  6. C#泛型-模板特化
  7. 自定义tableViewCell
  8. 一个Nodejs的简单计算測试程序
  9. JavaScript中的內定物件與函式: arguments, callee, caller, this, apply(), call()
  10. 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)
  11. 完整的yuicompressor单个压缩和批量压缩以及gzip再次压缩,拦截器的配置等
  12. Javascript里的if判断与逻辑运算符(||, &&)和比较运算符的特别之处
  13. 【原创】java NIO FileChannel 学习笔记 FileChannel 简介
  14. docker 部署cassandra
  15. vue中的适配:px2rem
  16. 概念、DW介绍
  17. pytest 的 yield
  18. IntelliJ IDEA 2017版 spring-boot 2.03 去除控制台logo;去除springboot 图标;去除springboot 图
  19. 用Execute操作数据库
  20. SpringCloud学习指南【更新】

热门文章

  1. Qt & opencv 学习(一)
  2. spin_lock、spin_lock_irq、spin_lock_irqsave区别
  3. 数据结构之 栈与队列--- 走迷宫(深度搜索dfs)
  4. HDU1569 方格取数(2) —— 二分图点带权最大独立集、最小割最大流
  5. POJ3621 Sightseeing Cows 最优比率环 二分法
  6. 教你开发jQuery插件
  7. Android Studio运行出现项目 错误:非法字符:“\ufeff”
  8. ORACLE 创建表空间及用户
  9. codeforces 673A A. Bear and Game(水题)
  10. I.MX6 Android /data 目录内容