mysql - español - ¿Cuál es la diferencia entre “utf8_unicode_ci” y “utf8_unicode_520_ci”
mysql utf8 encode (3)
Recientemente actualicé WAMPServer y ahora en phpMyAdmin, veo ambas colaciones utf8_unicode_ci
y utf8_unicode_520_ci
. Estaba usando "utf8_unicode_ci" para aplicaciones turcas, pero me pregunto qué hay de diferente en la nueva intercalación *_520
.
Como puede leer here (gracias al usuario 3399549 por el enlace) hay un problema con la clasificación / comparación de la letra polaca "Ł" (L con trazo) (minúscula: "ł"; html esc: ł
y Ł
) aquí Peter Gulutzan explica las diferencias entre las colocaciones:
Tenemos estas colaciones y reglas para Ł:
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
En idioma polaco, la letra Ł es posterior a la letra L y antes de M. Podemos escribir esto de la siguiente manera (para aclarar):
L < Ł < M
and
L != Ł
Así que para evitar este tipo de problemas (con ordenación / comapring) use utf8_unicode_ci
.
Como se documenta en Nombres de colación :
Los nombres de clasificación de Unicode pueden incluir un número de versión para indicar la versión del Algoritmo de clasificación de Unicode (UCA) en el que se basa la clasificación. Las colaciones basadas en UCA sin un número de versión en el nombre usan las claves de peso UCA versión-4.0.0: http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt . Un nombre de intercalación como
utf8_unicode_520_ci
se basa en las claves de peso UCA 5.2.0: http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt .
Si solo quieres turco, entonces considera utf8_turkish_ci
. Aquí están la mayoría de las diferencias (tomadas de 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 Þ=þ
Observe cómo Æ, Ç, Ð, Ğ, etc., se ordenan de manera diferente en las diferentes colaciones.
520 probablemente no afectará el texto normal, especialmente el turco. Por ejemplo, Turkish y 520 consideran que Ð
es una letra separada, pero utf8_unicode_ci
trata igual a D
Parece que 520 está ''más cerca'' de turco, pero no es idéntico para todas las letras.