“utf8_unicode_ci”和“utf8_unicode_520_ci”有啥区别
Posted
技术标签:
【中文标题】“utf8_unicode_ci”和“utf8_unicode_520_ci”有啥区别【英文标题】:What is the difference between "utf8_unicode_ci" and "utf8_unicode_520_ci"“utf8_unicode_ci”和“utf8_unicode_520_ci”有什么区别 【发布时间】:2013-09-25 03:21:51 【问题描述】:我最近升级了 WAMPServer,现在在 phpMyAdmin 中,我看到了两个排序规则 utf8_unicode_ci
和 utf8_unicode_520_ci
。我在土耳其语应用程序中使用“utf8_unicode_ci”,但我想知道新的*_520
排序规则有什么不同?
【问题讨论】:
查看帖子 [2011 年 8 月 22 日 16:56] Peter Gulutzan 在此线程 bugs.mysql.com/bug.php?id=9604 【参考方案1】:如Collation Names 中所述:
Unicode 归类名称可能包含一个版本号,以指示归类所基于的 Unicode 归类算法 (UCA) 的版本。名称中没有版本号的基于 UCA 的排序规则使用版本 4.0.0 UCA 权重键:http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt。
utf8_unicode_520_ci
等排序规则名称基于 UCA 5.2.0 权重键:http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt。
【讨论】:
TL;博士?越大越好,没有版本号 = 最旧的版本? 通读关键列表并尝试评估哪个更适合大多数用户?是的。【参考方案2】:您可以阅读here(感谢 user3399549 的链接)排序/比较波兰字母“Ł”(L 与笔划)存在问题(小写:“ł”;html esc : ł
和 Ł
) 这里 Peter Gulutzan 解释搭配之间的区别:
我们有这些 Ł 的排序规则和规则:
utf8_polish_ci Ł greater than L and less than M
utf8_unicode_ci Ł greater than L and less than M
utf8_unicode_520_ci Ł equal to L
utf8_general_ci Ł greater than Z
在波兰语中,字母 Ł 在字母 L 之后和 M 之前。我们可以这样写(为了澄清):
L < Ł < M
and
L != Ł
因此,为避免此类问题(使用排序/comapring),请使用utf8_unicode_ci
(或更好的utf8mb4_unicode_ci
)。
【讨论】:
utf8_unicode_520_ci
比 utf8_unicode_ci
更新,不是吗?为什么他们会让情况变得更糟?作为波兰人,您是否希望“Stanislaw”出现在“Stanislaw”的搜索结果中?当我 Ctrl+F 为“L”时,Chrome 会同时突出显示“Ł”和“L”。
选择这个更适合你的搭配
@mpen 看起来它是作为 general_ci 的升级路径创建的,而不是作为更新更好的替代品。 (不要引用我的话)【参考方案3】:
如果您只想要土耳其语,请考虑utf8_turkish_ci
。以下是大部分差异(取自http://mysql.rjweb.org/utf8_collations.html):
utf8 : utf8_turkish_ci A=a=ª=À=Á=Á=Â=Ã=Ä=Å=à=á=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ
utf8 : utf8_unicode_520_ci A=a=ª=À=Á=Á=Â=Ã=Ä=Å=à=á=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae=Æ=æ az
utf8 : utf8_unicode_ci A=a=ª=À=Á=Á=Â=Ã=Ä=Å=à=á=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ
utf8 : utf8_turkish_ci B=b C=c=Č=č ch cz Ç=ç D=d=Ď=ď dz Ð=ð
utf8 : utf8_unicode_520_ci B=b C=c=Ç=ç=Č=č ch cz D=d=Ð=ð=Ď=ď dz
utf8 : utf8_unicode_ci B=b C=c=Ç=ç=Č=č ch cz D=d=Ď=ď dz Ð=ð
utf8 : utf8_turkish_ci F=f fz ƒ G=g=Ģ=ģ gz Ğ=ğ H=h hz
utf8 : utf8_unicode_520_ci F=f fz ƒ G=g=Ğ=ğ=Ģ=ģ gz H=h hz
utf8 : utf8_unicode_ci F=f fz ƒ G=g=Ğ=ğ=Ģ=ģ gz H=h hz
utf8 : utf8_turkish_ci I=ı i=Ì=Í=Í=Î=Ï=ì=í=í=î=ï=Ī=ī=Į=į=İ ij=ij iz J=j
utf8 : utf8_unicode_520_ci I=i=Ì=Í=Í=Î=Ï=ì=í=í=î=ï=Ī=ī=Į=į=İ ij=ij iz ı J=j
utf8 : utf8_unicode_ci I=i=Ì=Í=Í=Î=Ï=ì=í=í=î=ï=Ī=ī=Į=į=İ ij=ij iz ı J=j
utf8 : utf8_turkish_ci K=k=Ķ=ķ L=l=Ĺ=ĺ=Ļ=ļ lj=LJ=Lj=lj ll lz Ł=ł M=m N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz
utf8 : utf8_unicode_520_ci K=k=Ķ=ķ L=l=Ĺ=ĺ=Ļ=ļ=Ł=ł lj=LJ=Lj=lj ll lz M=m N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz
utf8 : utf8_unicode_ci K=k=Ķ=ķ L=l=Ĺ=ĺ=Ļ=ļ lj=LJ=Lj=lj ll lz Ł=ł M=m N=n=Ñ=ñ=Ń=ń=Ņ=ņ=Ň=ň nz
utf8 : utf8_turkish_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Œ=œ oz Ö=ö Ø=ø
utf8 : utf8_unicode_520_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=Ø=ò=ó=ó=ô=õ=ö=ø oe=Œ=œ oz
utf8 : utf8_unicode_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_turkish_ci P=p Q=q R=r=Ř=ř S=s=Š=Š=š=š sh ss=ß sz Ş=ş
utf8 : utf8_unicode_520_ci P=p Q=q R=r=Ř=ř S=s=Ş=ş=Š=Š=š=š sh ss=ß sz
utf8 : utf8_unicode_ci P=p Q=q R=r=Ř=ř S=s=Ş=ş=Š=Š=š=š sh ss=ß sz
utf8 : utf8_turkish_ci T=t=Ť=ť TM=tm=™ tz U=u=Ù=Ú=Ú=Û=ù=ú=ú=û=Ū=ū=Ů=ů=Ų=ų ue uz Ü=ü V=v
utf8 : utf8_unicode_520_ci T=t=Ť=ť TM=tm=™ tz U=u=Ù=Ú=Ú=Û=Ü=ù=ú=ú=û=ü=Ū=ū=Ů=ů=Ų=ų ue uz V=v
utf8 : utf8_unicode_ci T=t=Ť=ť TM=tm=™ tz U=u=Ù=Ú=Ú=Û=Ü=ù=ú=ú=û=ü=Ū=ū=Ů=ů=Ų=ų ue uz V=v
utf8 : utf8_turkish_ci W=w X=x Y=y=Ý=Ý=ý=ý=ÿ=Ÿ yz
utf8 : utf8_unicode_520_ci W=w X=x Y=y=Ý=Ý=ý=ý=ÿ=Ÿ yz
utf8 : utf8_unicode_ci W=w X=x Y=y=Ý=Ý=ý=ý=ÿ=Ÿ yz
utf8 : utf8_turkish_ci Z=z=Ž=Ž=ž=ž zh zz Þ=þ
utf8 : utf8_unicode_520_ci Z=z=Ž=Ž=ž=ž zh zz Þ=þ
utf8 : utf8_unicode_ci Z=z=Ž=Ž=ž=ž zh zz Þ=þ
注意 Æ、Ç、Ð、Ğ 等在不同排序规则中的排序方式不同。
520 可能不会影响正常文本,尤其是土耳其语。例如,土耳其语和 520 将 Ð
视为单独的字母,但 utf8_unicode_ci
将其视为等于 D
。看起来 520 与土耳其语“更接近”,但并非所有字母都相同。
【讨论】:
以上是关于“utf8_unicode_ci”和“utf8_unicode_520_ci”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
utf8_general_ci 和 utf8_unicode_ci 有啥区别? [复制]
utf8_general_ci 和 utf8_unicode_ci 有啥区别? [复制]
utf8_general_ci 和 utf8_unicode_ci 有啥区别? [复制]
utf8_general_ci 和 utf8_unicode_ci 有啥区别? [复制]
归类 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合