JSON en BSON kunnen alleen geldige UTF-8-strings coderen / decoderen. Als uw gegevens (meegeleverde invoer) geen UTF-8 zijn, moet u deze converteren voordat u ze doorgeeft aan een JSON-afhankelijk systeem, zoals dit:
$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
Persoonlijk geef ik de voorkeur aan de eerste optie, zie de iconv()
handleiding pagina. Andere alternatieven zijn:
mb_convert_encoding()
utf8_encode(utf8_decode($string))
Je moet er altijd voor zorgen dat je strings UTF-8-gecodeerd zijn, zelfs de door de gebruiker ingediende strings, maar aangezien je zei dat je migreert van MySQL naar MongoDB, heb je geprobeerd je huidige database naar CSV te exporteren en de importscripts te gebruiken die komen met Mongo? Ze zouden dit moeten afhandelen...
BEWERKEN: Ik zei dat BSON alleen UTF-8 aankan, maar ik weet niet zeker of dit precies waar is, ik heb een vaag idee dat BSON UTF-16 of UTF-32 gebruikt om gegevens te coderen / decoderen, maar ik kan het niet controleren nu.