The world's most popular open source database
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.

