sql >> Base de Datos >  >> NoSQL >> MongoDB

Problemas con MongoDB PHP UTF-8

JSON y BSON solo pueden codificar/decodificar cadenas UTF-8 válidas, si sus datos (entrada incluida) no son UTF-8, debe convertirlos antes de pasarlos a cualquier sistema dependiente de JSON, como este:

$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

Personalmente prefiero la primera opción, vea el iconv() página de manuales. Otras alternativas incluyen:

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

Siempre debe asegurarse de que sus cadenas estén codificadas en UTF-8, incluso las enviadas por el usuario; sin embargo, dado que mencionó que está migrando de MySQL a MongoDB, ¿ha intentado exportar su base de datos actual a CSV y usar los scripts de importación que vienen? con Mongo? Deberían encargarse de esto...

EDITAR: Mencioné que BSON solo puede manejar UTF-8, pero no estoy seguro de si esto es exactamente cierto, tengo una vaga idea de que BSON usa UTF-16 o UTF-32 para codificar/decodificar datos, pero no puedo verificar ahora.