"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué \"Harligt\" y \"Härligt\" devuelven los mismos resultados en MySQL? Una mirada a la intercalación y normalización de caracteres.

¿Por qué \"Harligt\" y \"Härligt\" devuelven los mismos resultados en MySQL? Una mirada a la intercalación y normalización de caracteres.

Publicado el 2024-11-09
Navegar:291

Why Does \

El tratamiento de los caracteres especiales de MySQL: una paradoja explicada

En MySQL, la ejecución de consultas que involucran caracteres especiales como 'Å', 'Ä', y 'Ö' a menudo plantea dudas sobre la coherencia de los resultados. Por ejemplo, las consultas con 'Harligt' y 'Härligt' arrojan resultados idénticos, lo que deja a los usuarios perplejos.

Este fenómeno se atribuye a la configuración de intercalación predeterminada de MySQL, específicamente "utf8_general_ci" y "utf8_unicode_ci". Estas intercalaciones normalizan ciertos caracteres Unicode, incluidas las letras escandinavas, equiparándolos con sus equivalentes en inglés (por ejemplo, "Ä = A"). Esta normalización simplifica las operaciones de comparación y las búsquedas, pero puede resultar inconveniente en ciertos escenarios.

Para resolver este problema, considere las siguientes opciones:

  • Usar una intercalación diferente: Las intercalaciones como "utf8_bin" conservan los valores de los caracteres, incluidos los caracteres especiales, pero pueden tener implicaciones para otras operaciones.
  • Especificar intercalación en consultas: Para consultas específicas en las que desea anular la intercalación predeterminada , agregue "COLLATE utf8_bin" a la consulta. Ejemplo:
select * from topics where name='Harligt' COLLATE utf8_bin;
  • Crear una intercalación personalizada: Si ninguna de las soluciones anteriores Para satisfacer sus necesidades, puede crear una clasificación personalizada que se adapte a sus requisitos específicos.

Vale la pena señalar que las operaciones LIKE que no distinguen entre mayúsculas y minúsculas en MySQL no se pueden realizar sin la normalización de caracteres especiales. Sin embargo, se pueden encontrar discusiones relacionadas aquí:

  • [Buscando intercalación de MySQL que no distinga entre mayúsculas y minúsculas donde “a” != “ä”](https://dba.stackexchange.com/questions/231116/ buscando-entre-mayúsculas y minúsculas-mysql-collation-where-a-a)
  • [Búsqueda MYSQL que distingue entre mayúsculas y minúsculas para el campo utf8_bin](https://stackoverflow.com/questions/9704962/mysql-case-SENSITIVE- buscar-campo-bin-utf8)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3