MySQL tiene dos conjuntos de caracteres Unicode. Puede almacenar texto en unos 650 idiomas usando estos conjuntos de caracteres. Hemos añadido varias colaciones para estos dos nuevos conjuntos, y pronto añadiremos más.
ucs2
(UCS-2 Unicode) colaciones:
mysql> SHOW COLLATION LIKE 'ucs2%'; +--------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------+---------+-----+---------+----------+---------+ | ucs2_general_ci | ucs2 | 35 | Yes | Yes | 1 | | ucs2_bin | ucs2 | 90 | | Yes | 1 | | ucs2_unicode_ci | ucs2 | 128 | | Yes | 8 | | ucs2_icelandic_ci | ucs2 | 129 | | Yes | 8 | | ucs2_latvian_ci | ucs2 | 130 | | Yes | 8 | | ucs2_romanian_ci | ucs2 | 131 | | Yes | 8 | | ucs2_slovenian_ci | ucs2 | 132 | | Yes | 8 | | ucs2_polish_ci | ucs2 | 133 | | Yes | 8 | | ucs2_estonian_ci | ucs2 | 134 | | Yes | 8 | | ucs2_spanish_ci | ucs2 | 135 | | Yes | 8 | | ucs2_swedish_ci | ucs2 | 136 | | Yes | 8 | | ucs2_turkish_ci | ucs2 | 137 | | Yes | 8 | | ucs2_czech_ci | ucs2 | 138 | | Yes | 8 | | ucs2_danish_ci | ucs2 | 139 | | Yes | 8 | | ucs2_lithuanian_ci | ucs2 | 140 | | Yes | 8 | | ucs2_slovak_ci | ucs2 | 141 | | Yes | 8 | | ucs2_spanish2_ci | ucs2 | 142 | | Yes | 8 | | ucs2_roman_ci | ucs2 | 143 | | Yes | 8 | | ucs2_persian_ci | ucs2 | 144 | | Yes | 8 | +--------------------+---------+-----+---------+----------+---------+
utf8
(UTF-8 Unicode) colaciones:
mysql> SHOW COLLATION LIKE 'utf8%'; +--------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------+---------+-----+---------+----------+---------+ | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | utf8_latvian_ci | utf8 | 194 | | Yes | 8 | | utf8_romanian_ci | utf8 | 195 | | Yes | 8 | | utf8_slovenian_ci | utf8 | 196 | | Yes | 8 | | utf8_polish_ci | utf8 | 197 | | Yes | 8 | | utf8_estonian_ci | utf8 | 198 | | Yes | 8 | | utf8_spanish_ci | utf8 | 199 | | Yes | 8 | | utf8_swedish_ci | utf8 | 200 | | Yes | 8 | | utf8_turkish_ci | utf8 | 201 | | Yes | 8 | | utf8_czech_ci | utf8 | 202 | | Yes | 8 | | utf8_danish_ci | utf8 | 203 | | Yes | 8 | | utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 | | utf8_slovak_ci | utf8 | 205 | | Yes | 8 | | utf8_spanish2_ci | utf8 | 206 | | Yes | 8 | | utf8_roman_ci | utf8 | 207 | | Yes | 8 | | utf8_persian_ci | utf8 | 208 | | Yes | 8 | +--------------------+---------+-----+---------+----------+---------+
La colación utf8_unicode_ci
está
implementada según el Algoritmo de Colación Unicode (UCA,
Unicode Collation Algorithm ) descrito en
http://www.unicode.org/reports/tr10/. La
colación usa la versión-4.0.0 UCA para el peso de las claves:
http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt.
(La siguiente exposición se basa en
utf8_unicode_ci
, pero también es cierta para
ucs2_unicode_ci
.)
Actualmente, la colación utf8_unicode_ci
tiene soporta sólo parcialmente el Algoritmo de colación
Unicode. Algunos caracteres no están todavía soportados.
Además, la combinacion de marcas no está soportada
completamente. Esto afecta al vietnamita y a algunos idiomas
minoritarios en Rusia como el Udmurt, Tatar, Bashkir, y Mari.
La caractarística más significativa en
utf8_unicode_ci
es que soporta expansiones,
esto es, cuando un carácter resulta igual a una combinación de
otros caracteres. Por ejemplo, en alemán y otros idiomas
'ß
' es igual a 'ss
'.
utf8_general_ci
es una colación heredada que
no soporta expansiones. Sólo puede hacer comparaciones entre
caracteres uno a uno. Esto significa que las comparaciones para
colaciones utf8_general_ci
son más rápidas,
pero ligeramente menos correctas, que las comparaciones en
utf8_unicode_ci
).
Por ejemplo, las siguientes ecuaciones funcionan tanto en
utf8_general_ci
como en
utf8_unicode_ci
:
Ä = A Ö = O Ü = U
En cambio, esto es cierto para
utf8_general_ci
:
ß = s
Minentras que para utf8_unicode_ci
es cierta
la siguiente:
ß = ss
Colaciones específicas de idiomas para el conjunto de
caracteres utf8
están implementadas sólo si
la ordenación con utf8_unicode_ci
no
funciona bien para un idioma. Por ejemplo,
utf8_unicode_ci
funciona bien para alemán y
francés, así que no es necesario crear colaciones
utf8
especiales para estos dos idiomas.
utf8_general_ci
también es satisfactorio
para alemán y francés, excepto que 'ß
' es
igual a 's
', y no a 'ss
'.
Si esto es aceptable para su aplicación, debe usar
utf8_general_ci
porque es más rápido. En
caso contraro , use utf8_unicode_ci
porque es
más preciso.
utf8_swedish_ci
, como otras colaciones
utf8
específicas de un idioma, deriva de
utf8_unicode_ci
con reglas adicionales de
idioma. Por ejemplo, en sueco, la siguiente comparación es
cierta, lo que no esperaría un alemán o un francés:
Ü = Y < Ö
Las colaciones utf8_spanish_ci
y
utf8_spanish2_ci
se corresponden con español
moderno y español tradicional respectivamente. En ambas
colaciones , 'ñ
' es una letra independiente,
entre 'n
' y 'o
'. Además,
para español tradicional 'ch
' es una letra,
ordenada entre 'c
' y d
, y
'll
' es una letra que se coloca entre
'l
' y 'm
'
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.