Maison > base de données > tutoriel mysql > Pourquoi \'Harligt\' et \'Härligt\' renvoient-ils les mêmes résultats dans MySQL ? Un regard sur le classement et la normalisation des caractères.

Pourquoi \'Harligt\' et \'Härligt\' renvoient-ils les mêmes résultats dans MySQL ? Un regard sur le classement et la normalisation des caractères.

DDD
Libérer: 2024-10-26 22:48:30
original
601 Les gens l'ont consulté

Why Does

Le traitement des caractères spéciaux par MySQL : un paradoxe expliqué

Dans MySQL, l'exécution de requêtes impliquant des caractères spéciaux comme 'Å', 'Ä', et « Ö » soulève souvent des questions concernant la cohérence des résultats. Par exemple, les requêtes avec « Harligt » et « Härligt » donnent des résultats identiques, laissant les utilisateurs perplexes.

Ce phénomène est attribué aux paramètres de classement par défaut de MySQL, en particulier « utf8_general_ci » et « utf8_unicode_ci ». Ces classements normalisent certains caractères Unicode, y compris les lettres scandinaves, en les assimilant à leurs équivalents anglais (par exemple, « Ä = A »). Cette normalisation simplifie les opérations de comparaison et les recherches, mais peut s'avérer gênante dans certains scénarios.

Pour résoudre ce problème, envisagez les options suivantes :

  • Utiliser un classement différent : Les classements tels que "utf8_bin" préservent les valeurs de caractères, y compris les caractères spéciaux, mais peuvent avoir des implications pour d'autres opérations.
  • Spécifiez le classement dans les requêtes : Pour les requêtes spécifiques pour lesquelles vous souhaitez remplacer le classement par défaut , ajoutez "COLLATE utf8_bin" à la requête. Exemple :
select * from topics where name='Harligt' COLLATE utf8_bin;
Copier après la connexion
  • Créer un classement personnalisé : Si aucune des solutions ci-dessus ne répond à vos besoins, vous pouvez créer un classement personnalisé qui répond à vos besoins spécifiques.

Il convient de noter que les opérations LIKE insensibles à la casse dans MySQL ne peuvent pas être effectuées sans la normalisation des caractères spéciaux. Cependant, des discussions connexes peuvent être trouvées ici :

  • [Recherche d'un classement MySQL insensible à la casse où « a » != « ä »](https://dba.stackexchange.com/questions/231116/ Looking-for-case-insensitive-mysql-collation-where-a-a)
  • [Recherche MYSQL sensible à la casse pour le champ utf8_bin](https://stackoverflow.com/questions/9704962/mysql-case-sensitive- recherche-utf8-bin-field)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal