sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB PHP UTF-8 problem

JSON och BSON kan bara koda/avkoda giltiga UTF-8-strängar, om din data (ingår indata) inte är UTF-8 måste du konvertera den innan du skickar den till något JSON-beroende system, så här:

$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

Personligen föredrar jag det första alternativet, se iconv() manualsida. Andra alternativ inkluderar:

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

Du bör alltid se till att dina strängar är UTF-8-kodade, även de som användaren skickat in, men sedan du nämnde att du migrerar från MySQL till MongoDB, har du försökt exportera din nuvarande databas till CSV och använda importskripten som kommer med Mongo? De borde hantera det här...

EDIT: Jag nämnde att BSON bara kan hantera UTF-8, men jag är inte säker på om detta är exakt sant, jag har en vag uppfattning om att BSON använder UTF-16 eller UTF-32 för att koda/avkoda data, men jag kan inte kontrollera nu.



  1. ServiceStack Entities ID-fältnamn

  2. MongoDB $anyElementTrue

  3. I NodeJS, hur matar man ut resultat från mongodb med olika fältnamn?

  4. Hur man använder GridFS för att lagra bilder med Node.js och Mongoose