MYSQL 中,Character Sets 和 Collations的区别

1 篇文章 0 订阅

9.1.1. Character Sets and Collations in General


character set(字符集)是一组符号和编码。collation(连线校对)是一套比较字符的字符集的规则。用一个假设的字符集例子,让我们明确他们的区别。


假设我们有一个字母表,有四个字母: “ A ”, “ B ”, “ a ” , “ b ”。我们用数字给每个字母编码: “A” = 0 ,“ B” = 1 ,“a” = 2 ,“b” = 3 。字母“ A ”是一个符号,数字0“ A ” 的编码 ,这四个字母及这四个编码就是一个字符集。


假如我们想要比较两个字符串“A”和“B”的值。那么最简单的方法就是查看他们的编码:“A”的编码为0,“B”的编码为1,因为0小于1,所以我们说“A”小于“B”。这是在字符集的比较(连线校对)的应用。比较(连线校对)是一套规则(这个例子里只有一个规则,那就是比较编码)。我们称这种最简单的校对为二进制校对(binary collation)。


但如果我想说大小写是相等的呢?那我们应该这样做:(1)把小写的“a”和“b”等同于“A”和“B”,(2)然后比较它们的编码。我们称这是大小写不敏感校对(case-insensitive collation)。这比二进制校对稍麻烦一些。


在现实生活中,多数的字符集有许多的字符:。上千种西方书写字符构成的字符系统中,除了特殊的符号和标点符号,还有多种字母表。这不仅仅是“A”和“B”,而是整个字母表。同时在现实生活中,多数的校对有很多规则,不仅仅是是否对大小写敏感。还要区分不同的口音(例如德语的“Ö”,要关联到相同的口音。在两种德语校对规则中,其中一种就认为在多字符映射中“Ö” = “OE” )。


MySQL可以让你做这些事情:
用多种的字符集(character sets)存储字符串
用多种的校对(collations)规则比较字符串
对同一个服务器,同一个数据库,甚至是同一个表中的一个字符串,可以用不同的文字校对或字符集。
在任一个水平上,允许特定的字符集和校对设置。
在这些方面, MySQL是远远超过其他大多数数据库管理系统。然而,为了有效地使用这些功能,您需要知道什么字符集和校对的情况下,如何更改默认值,以及它们如何影响字符串的操作和函数。



出自:http://dev.mysql.com/doc/refman/5.0/en/charset-general.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Illegal mix of collations for operation 'UNION' 是一个报错提示,通常在进行SQL注入时会出现。这个错误提示表示在执行UNION操作时,不同字符集的数据进行了混合,造成了冲突。这个错误通常是由于数据库表的字符集不一致导致的。 举例来说,如果我们输入了类似于 "-1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#" 的SQL注入语句,它会尝试从信息模式(information_schema)的表获取表名,并将结果与数字1进行合并。然而,如果数据库存在不同字符集的表,那么在执行UNION操作时,不同字符集的数据就会发生冲突,从而导致 "Illegal mix of collations for operation 'UNION'" 的报错提示出现。 在具体的案例,dvwa表出现了 "Illegal mix of collations for operation 'UNION'" 报错。这意味着在执行UNION操作时,dvwa表的数据存在字符集冲突。可以通过检查数据库表的字符集设置,确保它们的字符集一致,以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [DVWA靶场在sql注入联合查询时返回报错信息 “Illegal mix of collations for operation ‘UNION’ ”之解决](https://blog.csdn.net/AlienEowynWan/article/details/127907803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [DVWASQL注入时union出错,union排序混乱(Illegal mix of collations for operation UNION)](https://blog.csdn.net/F_A_N_G_/article/details/129387274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值