sql >> Databáze >  >> NoSQL >> MongoDB

Problémy MongoDB PHP UTF-8

JSON a BSON mohou kódovat/dekódovat pouze platné řetězce UTF-8, pokud vaše data (včetně vstupu) nejsou UTF-8, musíte je převést, než je předáte jakémukoli systému závislému na JSON, například takto:

$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

Osobně preferuji první možnost, viz iconv() manuálová stránka. Mezi další alternativy patří:

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

Vždy byste se měli ujistit, že vaše řetězce mají kódování UTF-8, a to i ty zadané uživatelem, ale protože jste zmínili, že migrujete z MySQL na MongoDB, zkusili jste exportovat vaši aktuální databázi do CSV a použít importní skripty, které jsou součástí dodávky s Mongo? Měli by to zvládnout...

UPRAVIT: Zmínil jsem, že BSON zvládne pouze UTF-8, ale nejsem si jistý, zda je to přesně pravda, mám mlhavou představu, že BSON používá UTF-16 nebo UTF-32 pro kódování / dekódování dat, ale nemohu to zkontrolovat nyní.



  1. Aktualizujte pole hodnotou jiného pole v dokumentu

  2. Prototyp objektu Node.JS může být pouze objekt nebo null s Redis

  3. Proč existují pole KEYS a ARGV při volání skriptů Redis Lua?

  4. Událost klíčového prostoru Redis se nespouští