unicode排序规则,汉字怎么区分大小写,区分重音,区分假名,区分宽度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unicode排序规则,汉字怎么区分大小写,区分重音,区分假名,区分宽度相关的知识,希望对你有一定的参考价值。

unicode排序规则,汉字怎么区分大小写,区分重音,区分假名,区分宽度, 请详细作答,答得好,再给最高上限分.
先谢过

你翻翻Unicode字典就知道了,从4E00这个代码开始,后面大部分都是汉字了。
他们不区分大小写的,一个汉字一个编码。共6万多个汉字没有重复编码的,包括繁难偏僻的汉字在内。
假名重音什么的这些字体或符号是单独编码的,在一个语言里有音调或重音什么的,都在这个语言字体的后面另外加有的。如骂这个字的拼音是m加上a再加上去掉字符,共三个字组成的。
参考技术A 问题问的很笼统,一般的重音,假名,全角,半角都是由不同的字符(内码)代表的,unicode的排序没什么规律,但是每个国家的编码都有包括,其中的汉字部分称为“CJK统一汉字”(C指中国,J指日本,K指朝鲜),从0x4e00开始。

MySQL / MariaDB 不区分大小写的排序规则仍然区分大小写吗?

【中文标题】MySQL / MariaDB 不区分大小写的排序规则仍然区分大小写吗?【英文标题】:MySQL / MariaDB Case Insensitive Collation Still Case Sensitive? 【发布时间】:2019-06-19 11:08:18 【问题描述】:

使用 MariaDB 10.0.36,我有一个用户表,其排序规则为 utf8_turkish_ci 和一个 user_login 列,该列存储用户的用户名,该用户名也使用具有唯一索引的 utf8_turkish_ci 排序规则。

我的理解是 select 语句应该不区分大小写,但对于某些用户名似乎不是这样。

例如,我有一个用户登录为GoDoIt

此语句不返回任何记录:

SELECT * FROM user WHERE user_login = 'godoit'

但是,这是可行的:

SELECT * FROM user WHERE user_login = 'GoDoIt'

我觉得这很奇怪,因为Eric 的用户名可以双向使用。

SELECT * FROM user WHERE user_login = 'eric' SELECT * FROM user WHERE user_login = 'Eric'

返回相同的结果。那么为什么字符串中间的大写字母不起作用呢?在将字符串发送到数据库之前,我在字符串上使用 tolower 降低了 PHP 中的输入用户名,我猜这种方法不适用于某些用户名。

【问题讨论】:

这与“案例”无关。 【参考方案1】:

土耳其语 dotless I 和 dotted i 是两个独立的字符;在 utf8_turkish_ci 排序规则中,它们不被认为是相等的。

在此处查看整理表:http://collation-charts.org/mysql60/mysql604.utf8_turkish_ci.html

注意无点 I 和带点 i 的单独条目。

其他背景:https://en.wikipedia.org/wiki/Dotted_and_dotless_I

【讨论】:

天哪...我一直在使用错误的排序规则。【参考方案2】:

(评论太长。斯宾塞的回答很好。)

This 列出了相等或不相等的字母和状态,以及它们的顺序。以下摘录显示无点的 I 彼此相等,但被认为小于带点的 I:

utf8_turkish_ci   I=ı  Ħ=ħ  i=Ì=Í=Î=Ï=ì=í=î=ï=Ĩ=ĩ=Ī=ī=Ĭ=ĭ=Į=į=İ  ij=IJ=ij   iz J=j=j́=Ĵ=ĵ  jz

utf8_turkish_ci 的其他一些不寻常之处:Ö=ö - 被视为 O 和 P 之间的“字母”。Ç=ç 和 Ğ=ğŞ=ş 也是如此

注意:utf8mb4 和 utf8 处理土耳其语的方式相同。

MySQL 6.0 几年前就死了;相对于Ş,排序规则的链接似乎已过期:

mysql> SELECT 'Ş' = 'S' COLLATE utf8_turkish_ci;
+------------------------------------+
| 'Ş' = 'S' COLLATE utf8_turkish_ci  |
+------------------------------------+
|                                  0 |
+------------------------------------+

【讨论】:

以上是关于unicode排序规则,汉字怎么区分大小写,区分重音,区分假名,区分宽度的主要内容,如果未能解决你的问题,请参考以下文章

mysql 排序规则

firebird 设置不区分大小写的排序规则

MySQL的排序规则

SQL Server 排序规则的影响

怎样修改sqlserver2005系统数据库排序规则

SQL Server 不区分大小写的排序规则