1

我已经使用 MongoDB 和 PHP 几个月了。我正在对几个新功能进行一些测试,但 MongoDB 突然表现得很奇怪。当我将字符串插入数据库时​​,它会截断字符串中的第一个字符。我的代码没有改变,只有结果?我有一个名为 details 的文本表单。当我提交并将其插入到集合中时,详细信息条目变得很糟糕。如果我在表格中输入“番茄”,我将收到:

从 PHP 回显(从插入后的条目查询构建):

"omato"

从 Mongo Shell 我收到:

"Details" : ""

从 api 请求(回声 JSON)我收到:

"Details" : "\u0000omato"

关于是什么原因造成的任何想法?

4

1 回答 1

1

似乎您出于某种原因在字符串中添加了一个\0字符。三种不同的工具以不同的方式处理这一切:

  1. PHP 的 echo 只是显示它,因此它不会出现。如果您通过类似的方式流式传输输出,hexdump您将看到\0角色。

  2. mongo shell 在遇到\0字符时会截断显示,因此您什么也看不到。

  3. PHP 的 JSON 编码器将\0字符编码为“\u0000”。

于 2012-06-15T21:49:05.687 回答