"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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.

Publié le 2024-11-09
Parcourir:527

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 tels que 'Å', 'Ä', 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écifier 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;
  • Créez un classement personnalisé : Si aucune des solutions ci-dessus Pour répondre à 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/ recherche-insensible à la casse-mysql-collation-where-a-a)
  • [Recherche MYSQL sensible à la casse pour le champ utf8_bin](https://stackoverflow.com/questions/9704962/mysql-case-sensitive- recherche-de-champ-utf8-bin)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3