11

ho inserito un file di inizializzazione in MongoDB:MongoDB caratteri speciali

db.User.insert({ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "Österreich" }}) 

E se invoco questa voce con db.User.find(), che ottengo il seguente:

{ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "�sterreich" } } 

La parola con caratteri speciali "�sterreich non è corretta

Qualcuno ha idea di cosa posso fare in mongodb per risolvere questo problema?

+1

quale versione di mongodb stai usando? – Alex

+1

db.version() 3.0.7 – quma

+2

Stai ottenendo questo risultato dalla console mongo? – Rabea

risposta

4

congettura in modo da poter utilizzare i codici HTML all'interno di una stringa

Codice:

È possibile utilizzare & ouml; per salvare lo spl char in db.

db.User.insert({ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "österreich" }}) 

E su questa voce invocando con db.User.find(), si otterrà il seguente:

{ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "Österreich" } } 

Riferimento:

http://www.starr.net/is/type/htmlcodes.html

Replace multiple characters in a string in javascript

Spero che questo aiuti.

7

JSON e BSON può solo codifica/decodifica validi stringhe UTF-8, se i vostri dati (ingresso incluso) non è UTF-8 è necessario convertirlo prima di passarlo a qualsiasi dipendente dal sistema JSON, in questo modo:

$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 

Personalmente preferisco la prima opzione, vedere la pagina di manuale iconv(). Altre alternative includono:

mb_convert_encoding ("Österreich", "UTF-8", "ISO-8859-1");

  • utf8_encode(utf8_decode($string))

Si dovrebbe sempre assicurarsi che le corde siano codifica UTF-8, anche l'utente-presentate uno.