You are on page 1of 2

Conjuntos de caracteres y colaciones en general

(http://manuales.guebs.com/mysql-5.0) Un conjunto de caracteres es un conjunto de smbolos y codificaciones. Una colacin es un conjunto de reglas para comparar caracteres en un conjunto de caracteres. Vamos a dejar clara la distincin con un ejemplo de un conjunto de caracteres imaginario. Supongamos que tenemos un alfabeto con cuatro letras: 'A', 'B', 'a', 'b'. Damos a cada letra un nmero: 'A' = 0, 'B' = 1, 'a' = 2, 'b' = 3. La letra 'A' es un smbolo, el nmero 0 es la codificacin para 'A', y la combinacin de las cuatro letras y sus codificaciones es un conjunto de caracteres. Suponga que queremos comparar dos cadenas de caracteres, 'A' y 'B'. La forma ms fcil de hacerlo es mirar las codificaciones: 0 para 'A' y 1 para 'B'. Ya que 0 es menor a 1, decimos que 'A' es menor que 'B'. Lo que acabamos de hacer es aplicar una colacin a un conjunto de caracteres. La colacin es un conjunto de reglas (slo una en este caso): compara las codificaciones. LLamamos a la ms sencilla de todas las colaciones una colacin binaria. Pero, qu pasa si queremos decir que las letras en maysculas y minsculas son equivalentes? Entonces tendramos como mnimo dos reglas: (1) tratar las letras minsuclas 'a' y 'b' como equivalentes a 'A' y 'B'; (2) luego comparar las codificaciones. Llamamos a esto una colacin no sensible a maysuculas y minsculas (case-insensitive). Es un poco ms compleja que una colacin binaria. En el mundo real, la mayora de conjuntos de caracteres tienen varios caracteres: no slo 'A' y 'B' sino alfabetos completos, a veces varios alfabetos o sistemas de escritura orientales con miles de caracteres, junto con muchos smbolos especiales y signos de puntuacin. Tambin en el mundo real, la mayora de colaciones tienen muchas reglas: no slo distincin entre maysculas y minsculas, sino tambin sensibilidad a tildes (una tilde es una marca aadida a un carcter como en alemn '') y mapeos de mltiples caracteres (tales com la regla que '' = 'OE' en una de las dos colaciones alemanas). MySQL 5.0 puede hacer lo siguiente:

Guardar cadenas de caracteres usando una variedad de conjuntos de caracteres Comparar cadenas de caracteres usando una variedad de colaciones Mezclar cadenas de caracteres con distintos conjuntos de caracteres o colaciones en el mismo servidor, la misma base de datos, o incluso la misma tabla Permitir la especificacin de un conjunto de caracteres y una colacin en cualquier nivel

El servidor MySQL soporta varios conjuntos de caracteres. Para listar los disponibles, use el comando SHOW CHARACTER SET;
mysql> 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 | latin1 | latin2 | swe7 | ascii | ujis | sjis | hebrew | tis620 | euckr | koi8u | gb2312 | greek | cp1250 | gbk | latin5 ...

| | | | | | | | | | | | | | | |

KOI8-R Relcom Russian ISO 8859-1 West European ISO 8859-2 Central European 7bit Swedish US ASCII EUC-JP Japanese Shift-JIS Japanese ISO 8859-8 Hebrew TIS620 Thai EUC-KR Korean KOI8-U Ukrainian GB2312 Simplified Chinese ISO 8859-7 Greek Windows Central European GBK Simplified Chinese ISO 8859-9 Turkish

| | | | | | | | | | | | | | | |

koi8r_general_ci latin1_swedish_ci latin2_general_ci swe7_swedish_ci ascii_general_ci ujis_japanese_ci sjis_japanese_ci hebrew_general_ci tis620_thai_ci euckr_korean_ci koi8u_general_ci gb2312_chinese_ci greek_general_ci cp1250_general_ci gbk_chinese_ci latin5_turkish_ci

| | | | | | | | | | | | | | | |

1 1 1 1 1 3 2 1 1 2 1 2 1 1 2 1

| | | | | | | | | | | | | | | |

Cualquier conjunto de caracteres tiene siempre como mnimo una colacin, aunque puede tener varias. Para listar las colaciones para un conjunto de caracteres, use el comando SHOW COLLATION; Por ejemplo, para ver las colaciones para el conjunto de caracteres latin1 (ISO-8859-1 Europa Occidental):
mysql> SHOW COLLATION LIKE 'latin1%'; +---------------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +---------------------+---------+----+---------+----------+---------+ | latin1_german1_ci | latin1 | 5 | | | 0 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | | 0 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | | 0 | | latin1_general_cs | latin1 | 49 | | | 0 | | latin1_spanish_ci | latin1 | 94 | | | 0 | +---------------------+---------+----+---------+----------+---------+

Las colaciones para latin1 tienen los siguientes significados:


Colacin latin1_german1_ci latin1_swedish_ci latin1_danish_ci latin1_german2_ci latin1_bin latin1_general_ci latin1_general_cs latin1_spanish_ci Significado Alemn DIN-1 Sueco/Finlands Dans/Noruego Alemn DIN-2 Binario segn codificacin latin1 Multilinge (Europa Occidental) Multilinge (ISO Europa Occidental), sensible a maysculas Espaol moderno

You might also like