将中文保存到mongodb 2.4.8导致不可读的字符串

dis*_*dev 5 java mongodb playframework

在我使用Mongodb 2.0.6之前,一切都很好.最近我开始使用带有Java Play框架的Mongodb 2.4.8,我发现当我试图将中文保存到mongodb时,mongodb实际存储为一些不可读的字符串,例如&\#21457;&\#29983;,web上显示的内容是相同的字符串,做了什么知道为什么?

我该怎么办?如何将其转换为可读的中文?

dee*_*dak 6

我认为,你的字符串会被转换为中间不可读的字符串.我在控制台上对此进行了测试,对我来说效果很好.

 $ mongo test
 MongoDB shell version: 2.4.8
 connecting to: test
 > var doc = { "message" :"??" }
 > db.ChineseWord.save(doc)
 > db.ChineseWord.find().pretty()
 { "_id" : ObjectId("529da2018170273efa43e181"), "message" : "??" }
Run Code Online (Sandbox Code Playgroud)


dav*_*veh 3

从您发布的内容来看,我怀疑这可能是 Play 框架的产物,因为这两个角色都可以直接存储在 MongoDB 中。

> db.test1.insert({x:" and "})
> db.test1.find();
{ "_id" : ObjectId("52a12237e7c9d6190f6feb95"), "x" : " and " }
Run Code Online (Sandbox Code Playgroud)

假设您上面发布为 发 和 生 的字符确实是这样的,那么我怀疑 Play Framework 正在将它们转换为扩展 unicode 值的表示形式。在这种情况下,这两个字符将来自“CJK Unified Ideographs Extension B”部分。

您可以在此处查看整个字符集:http://codepoints.net/cjk_unified_ideographs_extension_b

这看起来与 play-framework google 组中的问题类似