sql >> Base de Datos >  >> RDS >> Mysql

Intercalación de MySQL para almacenar datos multilingües de un idioma desconocido

Debe utilizar una intercalación Unicode. Puede configurarlo de forma predeterminada en su sistema o en cada campo de sus tablas. Existen los siguientes nombres de intercalación Unicode, y estas son sus diferencias:

utf8_general_ci es una colación muy simple. Simplemente, elimina todos los acentos, luego los convierte a mayúsculas y usa el código de este tipo de letra de resultado de "letra base" para comparar.

utf8_unicode_ci utiliza la tabla de elementos de intercalación Unicode predeterminada.

Las principales diferencias son:

  1. utf8_unicode_ci admite las llamadas expansiones y ligaduras, por ejemplo:la letra alemana ß (U+00DF LETTER SHARP S) se ordena cerca de "ss" La letra Œ (U+0152 LATIN CAPITAL LIGATURE OE) se ordena cerca de "OE".

utf8_general_ci no admite expansiones/ligaduras, ordena todas estas letras como caracteres individuales y, a veces, en el orden incorrecto.

  1. utf8_unicode_ci es generalmente más preciso para todos los scripts. Por ejemplo, en bloque cirílico:utf8_unicode_ci está bien para todos estos idiomas:ruso, búlgaro, bielorruso, macedonio, serbio y ucraniano. Mientras que utf8_general_ci está bien solo para el subconjunto ruso y búlgaro del cirílico. Las letras adicionales utilizadas en bielorruso, macedonio, serbio y ucraniano no se ordenan bien.

+/- La desventaja de utf8_unicode_ci es que es un poco más lento que utf8_general_ci.

Entonces, dependiendo de si sabe o no qué idiomas/caracteres específicos va a usar, le recomiendo que use utf8_unicode_ci, que tiene una cobertura más amplia.