Я использую mongodb и JavaScript, чтобы сделать некоторую строковую обработку. Теперь я получил некоторую ошибку как:
Sun May 23 07:42:20 Assertion failure JS_EncodeCharacters( _context , s , srclen , dst , &len) scripting/engine_spidermonkey.cpp 152
0x80f4f7e 0x80f8794 0x811525b 0x811a953 0x8119fc4 0x8111bc5 0x81b408e 0x81c4ee7 0x81b4a10 0x817a881 0x817a7d8 0x817a6e2 0x811e1bb 0x80a777b 0x80a8f8a 0xb7cb2455 0x80a37a1
mongodb-linux-i686-1.4.2/bin/mongo(_ZN5mongo12sayDbContextEPKc+0xfe) [0x80f4f7e]
После выполнения некоторого Google я нахожу, что JS_EncodeCharacters возвращают false, если вход не является допустимой строкой UTF16. (если spidermonkey является сборкой с включенным UTF-8),
Таким образом, я задавался вопросом, как протестировать, если входная строка, если надлежащий UTF16 представляет в виде строки? таким образом, я могу пропустить такой вид строки для предотвращения проблемы...
Спасибо
В этой части UTF-16 FAQ описываются последовательности недопустимых символов:
Два значения FFFE 16 и FFFF 16 ], а также 32 значения от FDD0 16 до FDEF 16 представляют собой несимволы. Они недопустимы при обмене, но могут свободно использоваться внутри реализации. Непарные суррогаты также недействительны, т. Е. Любое значение в диапазоне от D800 16 до DBFF 16 , за которым не следует значение в диапазоне от DC00 16 до DFFF ] 16 или любое значение в диапазоне от DC00 16 до DFFF 16 , которому не предшествует значение в диапазоне от D800 16 до DBFF 16 .
Если вы делаете это в Javascript, я не уверен, что это будет так легко проверить, хотя ...