PHP 的 var_dump / print_r 输出是乱码 - 编码问题?

PHP's var_dump / print_r output is garbled - encoding issue?

我遇到一个问题,在服务器上 var_dumpprint_r 的输出完全是乱码。 print_r 输出纯粹的乱码(例如 ��]{W�8�����- ... 等),而 var_dump 至少给出 string (1664),然后是类似的乱码(尽管这次用双引号引起来) .

这看起来像一个字符编码问题,但我找不到任何编码似乎可以解决它(而且我不知道为什么只是转储一个 PHP 对象应该输出非 ascii 字符), echo 工作正常。或者,我想知道这是否可能是 gzip 问题。无论哪种方式,我怀疑它一定是 PHP 或 Apache 配置中的某些东西,但我不知道如何修复它。

如果有人对如何解决这个问题有任何建议,我将不胜感激!


更新: 经进一步调查,这似乎是我要转储的特定对象特有的问题。有问题的对象是从 API 请求(通过 curl)解码的 JSON。 json_decodecurl 是否有可能被错误配置/破坏编码?

不管怎样,我终于弄清了这个问题的真相(我想!)

问题似乎是 API 的输出是 运行 到 json_decode,无论它是否是 JSON。 MySQL 错误导致错误页面,而不是 JSON 响应,当 运行 到 json_decode 之前(由接收它的 API 处理代码) var_dump制作的乱码沙拉,如上。