MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Problèmes MongoDB PHP UTF-8

JSON et BSON ne peuvent encoder/décoder que des chaînes UTF-8 valides, si vos données (entrée incluse) ne sont pas UTF-8, vous devez les convertir avant de les transmettre à tout système dépendant de JSON, comme ceci :

$string = iconv('UTF-8', 'UTF-8//IGNORE', $string); // or
$string = iconv('UTF-8', 'UTF-8//TRANSLIT', $string); // or even
$string = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string); // not sure how this behaves

Personnellement je préfère la première option, voir le iconv() page de manuel. D'autres alternatives incluent :

  • mb_convert_encoding()
  • utf8_encode(utf8_decode($string))

Vous devez toujours vous assurer que vos chaînes sont encodées en UTF-8, même celles soumises par l'utilisateur, mais depuis que vous avez mentionné que vous migrez de MySQL vers MongoDB, avez-vous essayé d'exporter votre base de données actuelle vers CSV et d'utiliser les scripts d'importation qui viennent avec Mongo ? Ils devraient gérer ça...

MODIF : J'ai mentionné que BSON ne peut gérer que UTF-8, mais je ne sais pas si c'est exactement vrai, j'ai une vague idée que BSON utilise UTF-16 ou UTF-32 pour encoder/décoder des données, mais je ne peux pas vérifier maintenant.