10.10. Conjuntos de caracteres y colaciones que soporta MySQL

MySQL 5.0

10.10. Conjuntos de caracteres y colaciones que soporta MySQL

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 :

+----------+-----------------------------+---------------------+--------+
| 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 |
+----------+-----------------------------+---------------------+--------+

10.10.1. Conjuntos de caracteres Unicode

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.

  • (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 |
    +--------------------+---------+-----+---------+----------+---------+
    
  • (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 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 , pero también es cierta para .)

Actualmente, la colación 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 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 ''.

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 son más rápidas, pero ligeramente menos correctas, que las comparaciones en ).

Por ejemplo, las siguientes ecuaciones funcionan tanto en como en :

Ä = A
Ö = O
Ü = U

En cambio, esto es cierto para :

ß = s

Minentras que para es cierta la siguiente:

ß = ss

Colaciones específicas de idiomas para el conjunto de caracteres están implementadas sólo si la ordenación con no funciona bien para un idioma. Por ejemplo, funciona bien para alemán y francés, así que no es necesario crear colaciones especiales para estos dos idiomas.

también es satisfactorio para alemán y francés, excepto que '' es igual a '', y no a ''. Si esto es aceptable para su aplicación, debe usar porque es más rápido. En caso contraro , use porque es más preciso.

, como otras colaciones específicas de un idioma, deriva de 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 y se corresponden con español moderno y español tradicional respectivamente. En ambas colaciones , '' es una letra independiente, entre '' y ''. Además, para español tradicional '' es una letra, ordenada entre '' y , y '' es una letra que se coloca entre '' y ''

10.10.2. Conjuntos de caracteres de Europa occidental

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.

  • (US ASCII) colaciones:

    • (por defecto)

  • (DOS Europa Occidental) colaciones:

    • (por defecto)

  • (DEC Europa Occidental) colaciones:

    • (por defecto)

  • (HP Europa Occidental) colaciones:

    • (por defecto)

  • (ISO 8859-1 Europa Occidental) colaciones:

    • (por defecto)

    es el conjunto de caracteres por defecto. La colación 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 y 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.

    • (diccionario) reglas:

      Ä = A
      Ö = O
      Ü = U
      ß = s
      
    • (páginas amarillas) reglas:

      Ä = AE
      Ö = OE
      Ü = UE
      ß = ss
      

    En la colación , '' es una letra independiente, entre '' y ''.

  • (Mac Europa Occidental) colaciones:

    • (por defecto)

  • (7bit Sueca) colación:

    • (por defecto)

10.10.3. Conjuntos de caracteres de Europa central

También proveemos algún soporte para conjuntos de caracteres usados en la República Checa, Eslovaquia, Hungría, Romania, Eslovenia, Croacia y Polonia.

  • (Windows Europa Central) colaciones:

    • (por defecto)

  • (DOS Europa Central) colaciones:

    • (por defecto)

  • (DOS Kamenicky Checo-Eslovaco) colaciones:

    • (por defecto)

  • (ISO 8859-2 Europa Central) colaciones:

    • (por defecto)

  • (Mac Europa Central) colaciones:

    • (por defecto)

10.10.4. Conjuntos de caracteres del sur de Europa y de Oriente Medio

  • (ARMSCII-8 Armenia) colaciones:

    • (por defecto)

  • (Windows Arabiga) colaciones:

    • (por defecto)

  • (GEOSTD8 Georgia) colaciones:

    • (por defecto)

  • (ISO 8859-7 Grecia) colaciones:

    • (default)

  • (ISO 8859-8 Hebrew) collations:

    • (por defecto)

  • (ISO 8859-9 Turquía) colaciones:

    • (por defecto)

10.10.5. Conjuntos de caracteres bálticos

Los conjuntos de caracteres bálticos cubren estonio, letón, y lituano. Hay dos conjuntos de caracteres bálticos soportados en la actualidad:

  • (Windows Báltico) colaciones:

    • (por defecto)

  • (ISO 8859-13 Báltico) colaciones:

    • (por defecto)

10.10.6. Conjuntos de caracteres cirílicos

Estos son los conjuntos de caracteres cirílicos y colaciones para usar con bielorruso, búlgaro, ruso y ucraniano.

  • (Windows cirílico) colaciones:

    • (por defecto)

  • (DOS Ruso) colaciones:

    • (por defecto)

  • (KOI8-R Relcom Rusia) colaciones:

    • (por defecto)

  • (KOI8-U Ukrania) colaciones:

    • (por defecto)

10.10.7. Conjuntos de caracteres asiáticos

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 chino tradicional) colaciones:

    • (por defecto)

  • (SJIS para Windows japonés) collations:

    • (por defecto)

  • (UJIS para Windows japonés) colaciones:

    • (por defecto)

  • (EUC-KR Koreano) colaciones:

    • (por defecto)

  • (GB2312 chino simplificado) colaciones:

    • (por defecto)

  • (GBK chino simplificado) colaciones:

    • (por defecto)

  • (Shift-JIS japonés) colaciones:

    • (por defecto)

  • (TIS620 Thai) colaciones:

    • (por defecto)

  • (EUC-JP japonés) colaciones:

    • (por defecto)