Специальные символы MongoDB
Я ввел файл init в MongoDB:
db.User.insert({ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "Österreich" }})
И если я вызываю эту запись с помощью db.User.find(), я получаю следующее:
{ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "�sterreich" } }
Слово со специальными символами "½½sterreich" неверно.
Кто-нибудь знает, что я могу сделать в mongodb, чтобы решить эту проблему?
Ответы
Ответ 1
Угадайте, что вы можете использовать HTML-коды внутри строки
Код
Вы можете использовать и ouml;, чтобы сохранить spl char в db.
db.User.insert({ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "österreich" }})
И при вызове этой записи с помощью db.User.find() вы получите следующее:
{ "_id" : ObjectId("5589929b887dc1fdb501cdba"), "_class" : "com.smartinnotec.aposoft.dao.domain.User", "title" : "DI.", ... "address" : { "_id" : null, ... "country" : "Österreich" } }
Ссылка
http://www.starr.net/is/type/htmlcodes.html
Заменить несколько символов в строке в javascript
Надеюсь, что это поможет.
Ответ 2
JSON и BSON могут только кодировать/декодировать допустимые строки UTF-8, если ваши данные (включая входные данные) не являются UTF-8, вам необходимо преобразовать их, прежде чем передавать их в любую зависимую от JSON систему, например:
$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
Лично я предпочитаю первый вариант, см. справочную страницу iconv()
. К другим альтернативам относятся:
mb_convert_encoding ( "Österreich", "UTF-8", "ISO-8859-1" );
-
utf8_encode(utf8_decode($string))
Вы всегда должны убедиться, что ваши строки закодированы в кодировке UTF-8, даже пользовательский.