MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Problemas do MongoDB PHP UTF-8


JSON e BSON só podem codificar / decodificar strings UTF-8 válidas, se seus dados (entrada incluída) não forem UTF-8, você precisará convertê-los antes de passá-los para qualquer sistema dependente de JSON, assim:
$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

Pessoalmente prefiro a primeira opção, veja o iconv() página do manual. Outras alternativas incluem:
  • mb_convert_encoding()
  • utf8_encode(utf8_decode($string))

Você deve sempre certificar-se de que suas strings são codificadas em UTF-8, mesmo as enviadas pelo usuário, no entanto, desde que você mencionou que está migrando do MySQL para o MongoDB, você tentou exportar seu banco de dados atual para CSV e usar os scripts de importação que vêm com Mongo? Eles deveriam lidar com isso...

EDITAR: Mencionei que o BSON só pode lidar com UTF-8, mas não tenho certeza se isso é exatamente verdade, tenho uma vaga ideia de que o BSON usa UTF-16 ou UTF-32 para codificar/decodificar dados, mas não consigo verificar agora.