JSON und BSON können nur gültige UTF-8-Strings codieren/decodieren, wenn Ihre Daten (einschließlich Eingabe) nicht UTF-8 sind, müssen Sie sie konvertieren, bevor Sie sie an ein JSON-abhängiges System weitergeben, wie hier:
$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
Ich persönlich bevorzuge die erste Option, siehe iconv()
Handbuchseite. Weitere Alternativen sind:
mb_convert_encoding()
utf8_encode(utf8_decode($string))
Sie sollten immer sicherstellen, dass Ihre Zeichenfolgen UTF-8-codiert sind, auch die vom Benutzer übermittelten. Da Sie jedoch erwähnt haben, dass Sie von MySQL zu MongoDB migrieren, haben Sie versucht, Ihre aktuelle Datenbank in CSV zu exportieren und die mitgelieferten Importskripte zu verwenden mit Mongo? Sie sollten sich darum kümmern...
BEARBEITEN: Ich habe erwähnt, dass BSON nur UTF-8 verarbeiten kann, aber ich bin mir nicht sicher, ob das genau stimmt. Ich habe eine vage Vorstellung, dass BSON UTF-16 oder UTF-32 verwendet, um Daten zu codieren / zu decodieren, aber ich kann es nicht überprüfen jetzt.