mb_internal_encoding('UTF-8')ne fait rien par lui-même, il définit uniquement le paramètre d'encodage par défaut pour chaquemb_une fonction. Si vous n'utilisez aucunmb_fonction, cela ne fait aucune différence. Si c'est le cas, il est logique de le définir afin que vous n'ayez pas à passer le$encodingparamètre à chaque fois individuellement.- IMO
mb_detect_encodingest la plupart du temps inutile car il est fondamentalement impossible de détecter avec précision l'encodage d'un texte inconnu. Vous devez soit savoir dans quel encodage se trouve un blob de texte parce que vous avez une spécification à ce sujet, soit vous devez analyser les métadonnées appropriées comme les en-têtes ou les balises méta où l'encodage est spécifié. - Utilisation de
mb_check_encodingvérifier si un blob de texte est valide dans l'encodage dans lequel vous vous attendez est généralement suffisant. Si ce n'est pas le cas, supprimez-le et générez une erreur appropriée. -
Concernant :
Si vous manipulez des chaînes contenant des caractères multioctets, alors oui, vous devez utiliser le
mb_fonctions pour éviter d'obtenir des résultats erronés. Les fonctions de chaîne de base ne fonctionnent qu'au niveau de l'octet, pas au niveau du caractère, ce que vous voulez généralement lorsque vous travaillez avec des chaînes. utf8_general_civsutf8_binne fait une différence que lors de la collecte , c'est-à-dire trier et comparer des chaînes. Avecutf8_binles données sont traitées sous forme binaire, c'est-à-dire que seules les données identiques sont identiques. Avecutf8_general_ciune certaine logique est appliquée, par ex. "é" est trié avec "e" et les majuscules sont considérées comme égales aux minuscules.