sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB PHP UTF-8 problemer

JSON og BSON kan kun kode/afkode gyldige UTF-8-strenge, hvis dine data (inkluderet input) ikke er UTF-8, skal du konvertere dem, før de overføres til et hvilket som helst JSON-afhængigt system, sådan her:

$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

Personligt foretrækker jeg den første mulighed, se iconv() manual side. Andre alternativer omfatter:

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

Du bør altid sikre dig, at dine strenge er UTF-8-kodede, selv de brugerindsendte, men siden du nævnte, at du migrerer fra MySQL til MongoDB, har du prøvet at eksportere din nuværende database til CSV og bruge de import-scripts, der kommer med Mongo? De burde klare dette...

EDIT: Jeg nævnte, at BSON kun kan håndtere UTF-8, men jeg er ikke sikker på, om dette er nøjagtigt sandt, jeg har en vag idé om, at BSON bruger UTF-16 eller UTF-32 til at kode/afkode data, men jeg kan ikke kontrollere nu.



  1. Mongod klager over, at der ikke er nogen /data/db-mappe

  2. MongoDB opdatering()

  3. Sådan tester du dine MongoDB-applikationsopgraderinger?

  4. HBase prøvetabel