Solución:
La intercalación le dice a la base de datos cómo realizar la comparación y clasificación de cadenas. Debe coincidir con tu juego de caracteres.
Si usa UTF-8, la intercalación debe ser utf8_general_ci. Esto ordenará en orden Unicode (no distingue entre mayúsculas y minúsculas) y funciona para la mayoría de los idiomas. También conserva el orden ASCII y Latin1.
La colación predeterminada es normalmente latin1.
En realidad, la intercalación no es la predeterminada, sino que le ofrece la intercalación predeterminada como primera opción.
De lo que estamos hablando es de la intercalación, o el conjunto de caracteres que usará su base de datos en sus tipos de texto. Su opción predeterminada generalmente se basa en la configuración regional, por lo que, a menos que esté planeando globalizar, eso suele ser muy interesante.
Las intercalaciones también determinan la sensibilidad entre mayúsculas y minúsculas (es decir, ¿es ‘grande’ == ‘grande’? Con un IC, lo es). Consulte la lista de MySQL para conocer todas las opciones.
Respuesta corta: use siempre utf8mb4
(específicamente utf8mb4_unicode_ci
) cuando se trata de la intercalación en MySql y MariaDB.
Respuesta larga:
MySQL utf8 La codificación tiene un nombre extraño, ya que es diferente de la codificación UTF-8 adecuada. No ofrece compatibilidad completa con Unicode, lo que puede provocar la pérdida de datos o vulnerabilidades de seguridad.
Afortunadamente, MySQL 5.5.3 (lanzado a principios de 2010) introdujo una nueva codificación llamada utf8mb4 que se asigna a UTF-8 adecuado y, por lo tanto, es totalmente compatible con Unicode.
Lea el texto completo aquí: https://mathiasbynens.be/notes/mysql-utf8mb4
En cuanto a qué específico utf8mb
para elegir, ir con utf8mb4_unicode_ci
para que la clasificación siempre se maneje correctamente con inconvenientes de rendimiento mínimos / imperceptibles. Vea más detalles aquí: ¿Cuál es la diferencia entre utf8_general_ci y utf8_unicode_ci?