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会产生乱码沙拉,如上所述。