Jeu de caractères Unicode dans MySQL : comprendre l'anomalie « Ä »
Le traitement par MySQL des caractères « ä », « ö » et « ü » comme « AAO » lorsque la recherche peut être déroutante. Pour comprendre ce comportement, nous devons nous plonger dans le monde des jeux de caractères Unicode et de leurs classements.
Dans les classements Unicode non spécifiques à une langue, tels que utf8_general_ci et utf8_unicode_ci, certains caractères Unicode sont traités comme équivalents. Plus précisément, les caractères « Ä », « Ö » et « Ü » sont normalisés à leurs équivalents de base « A », « O » et « U ». Cette normalisation est effectuée pour garantir que les caractères avec des prononciations phonétiques similaires sont traités de manière identique dans les comparaisons et les recherches.
Pour désactiver cette normalisation et effectuer une recherche sensible à la casse pour la chaîne exacte 'Härligt', vous pouvez utiliser le utf8_bin collation:
select * from topics where name='Harligt' COLLATE utf8_bin;
Vous pouvez également utiliser un classement différent pour la requête uniquement, tel que latin1_bin:
select * from topics where name ='Härligt' COLLATE latin1_bin;
Cependant, si vous avez besoin de recherches insensibles à la casse sans le Ä = Pour une conversion, vous devrez utiliser une approche différente, car il n'existe pas de classement MySQL qui fournit une comparaison insensible à la casse sans conversion implicite du tréma.
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!