MySQL soporta más de 70 colaciones para más de 30 conjuntos de
caracteres. Los conjuntos de caracteres y sus colaciones por
defecto se muestran con el comando SHOW CHARACTER
SET
:
+----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | ISO 8859-1 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +----------+-----------------------------+---------------------+--------+
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
'
Los conjuntos de caracteres para Europa Occidental cubren la mayoría de lenguas de Europa Occidental como francés, español, catalán, vasco, protugués, italiano, albano, alemán, holandés, sueco, noruego, finlandés, feroés, islandés, irlandés, escocés e inglés.
-
ascii
(US ASCII) colaciones:-
ascii_bin
-
ascii_general_ci
(por defecto)
-
-
cp850
(DOS Europa Occidental) colaciones:-
cp850_bin
-
cp850_general_ci
(por defecto)
-
-
dec8
(DEC Europa Occidental) colaciones:-
dec8_bin
-
dec8_swedish_ci
(por defecto)
-
-
hp8
(HP Europa Occidental) colaciones:-
hp8_bin
-
hp8_english_ci
(por defecto)
-
-
latin1
(ISO 8859-1 Europa Occidental) colaciones:-
latin1_bin
-
latin1_danish_ci
-
latin1_general_ci
-
latin1_general_cs
-
latin1_german1_ci
-
latin1_german2_ci
-
latin1_spanish_ci
-
latin1_swedish_ci
(por defecto)
latin1
es el conjunto de caracteres por defecto. La colaciónlatin1_swedish_ci
es la colación por defecto que probablemente usan la mayoría de clientes MySQL. Se dice frecuentemente que está basado en las reglas de colación sueca/finlandesa, pero hay suecos y finlandeses que no están de acuerdo con esta afirmación.Las colaciones
latin1_german1_ci
ylatin1_german2_ci
están basadas en los estándars DIN-1 y DIN-2, mientras DIN significa Deutsches Institut für Normung (el equivalente alemán de ANSI). DIN-1 es el diccionario de la colación y DIN-2 son las "páginas amarillas" de la colación.-
latin1_german1_ci
(diccionario) reglas:Ä = A Ö = O Ü = U ß = s
-
latin1_german2_ci
(páginas amarillas) reglas:Ä = AE Ö = OE Ü = UE ß = ss
En la colación
latin1_spanish_ci
, 'ñ
' es una letra independiente, entre 'n
' y 'o
'. -
-
macroman
(Mac Europa Occidental) colaciones:-
macroman_bin
-
macroman_general_ci
(por defecto)
-
-
swe7
(7bit Sueca) colación:-
swe7_bin
-
swe7_swedish_ci
(por defecto)
-
También proveemos algún soporte para conjuntos de caracteres usados en la República Checa, Eslovaquia, Hungría, Romania, Eslovenia, Croacia y Polonia.
-
cp1250
(Windows Europa Central) colaciones:-
cp1250_bin
-
cp1250_croatian_ci
-
cp1250_czech_cs
-
cp1250_general_ci
(por defecto)
-
-
cp852
(DOS Europa Central) colaciones:-
cp852_bin
-
cp852_general_ci
(por defecto)
-
-
keybcs2
(DOS Kamenicky Checo-Eslovaco) colaciones:-
keybcs2_bin
-
keybcs2_general_ci
(por defecto)
-
-
latin2
(ISO 8859-2 Europa Central) colaciones:-
latin2_bin
-
latin2_croatian_ci
-
latin2_czech_cs
-
latin2_general_ci
(por defecto) -
latin2_hungarian_ci
-
-
macce
(Mac Europa Central) colaciones:-
macce_bin
-
macce_general_ci
(por defecto)
-
-
armscii8
(ARMSCII-8 Armenia) colaciones:-
armscii8_bin
-
armscii8_general_ci
(por defecto)
-
-
cp1256
(Windows Arabiga) colaciones:-
cp1256_bin
-
cp1256_general_ci
(por defecto)
-
-
geostd8
(GEOSTD8 Georgia) colaciones:-
geostd8_bin
-
geostd8_general_ci
(por defecto)
-
-
greek
(ISO 8859-7 Grecia) colaciones:-
greek_bin
-
greek_general_ci
(default)
-
-
hebrew
(ISO 8859-8 Hebrew) collations:-
hebrew_bin
-
hebrew_general_ci
(por defecto)
-
-
latin5
(ISO 8859-9 Turquía) colaciones:-
latin5_bin
-
latin5_turkish_ci
(por defecto)
-
Los conjuntos de caracteres bálticos cubren estonio, letón, y lituano. Hay dos conjuntos de caracteres bálticos soportados en la actualidad:
-
cp1257
(Windows Báltico) colaciones:-
cp1257_bin
-
cp1257_general_ci
(por defecto) -
cp1257_lithuanian_ci
-
-
latin7
(ISO 8859-13 Báltico) colaciones:-
latin7_bin
-
latin7_estonian_cs
-
latin7_general_ci
(por defecto) -
latin7_general_cs
-
Estos son los conjuntos de caracteres cirílicos y colaciones para usar con bielorruso, búlgaro, ruso y ucraniano.
-
cp1251
(Windows cirílico) colaciones:-
cp1251_bin
-
cp1251_bulgarian_ci
-
cp1251_general_ci
(por defecto) -
cp1251_general_cs
-
cp1251_ukrainian_ci
-
-
cp866
(DOS Ruso) colaciones:-
cp866_bin
-
cp866_general_ci
(por defecto)
-
-
koi8r
(KOI8-R Relcom Rusia) colaciones:-
koi8r_bin
-
koi8r_general_ci
(por defecto)
-
-
koi8u
(KOI8-U Ukrania) colaciones:-
koi8u_bin
-
koi8u_general_ci
(por defecto)
-
Los conjuntos de caracteres asiáticos que soportamos incluyen chino, japonés, koreano y thai. Esto puede ser complicado. Por ejemplo, los conjuntos chinos deben permitir miles de caracteres distintos.
-
big5
(Big5 chino tradicional) colaciones:-
big5_bin
-
big5_chinese_ci
(por defecto)
-
-
cp932
(SJIS para Windows japonés) collations:-
cp932_bin
-
cp932_japanese_ci
(por defecto)
-
-
eucjpms
(UJIS para Windows japonés) colaciones:-
eucjpms_bin
-
eucjpms_japanese_ci
(por defecto)
-
-
euckr
(EUC-KR Koreano) colaciones:-
euckr_bin
-
euckr_korean_ci
(por defecto)
-
-
gb2312
(GB2312 chino simplificado) colaciones:-
gb2312_bin
-
gb2312_chinese_ci
(por defecto)
-
-
gbk
(GBK chino simplificado) colaciones:-
gbk_bin
-
gbk_chinese_ci
(por defecto)
-
-
sjis
(Shift-JIS japonés) colaciones:-
sjis_bin
-
sjis_japanese_ci
(por defecto)
-
-
tis620
(TIS620 Thai) colaciones:-
tis620_bin
-
tis620_thai_ci
(por defecto)
-
-
ujis
(EUC-JP japonés) colaciones:-
ujis_bin
-
ujis_japanese_ci
(por defecto)
-