【问题标题】:PHP's var_dump / print_r output is garbled - encoding issue?PHP 的 var_dump / print_r 输出是乱码 - 编码问题?
【发布时间】:2015-03-15 09:01:02
【问题描述】:

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

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

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


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

【问题讨论】:

  • 不,据我所知,这是一个不同的问题。这不是一般的编码问题。 print_rvar_dump 的输出特别有问题
  • 你到底想打印什么?
  • 我正在尝试转储代表 API 响应的 PHP 对象。有趣的是,我可以转储字符串和数组,看起来不错,但是这个特定的对象会完全乱码。
  • “可能重复”问题肯定没有回答这个问题 - 如问题中所述,(1)我尝试了不同的编码,以及(2)如果它是一般的 HTML / HTTP编码问题,似乎不会只影响var_dump/print_r的输出

标签: php debugging character-encoding gzip


【解决方案1】:

不管怎样,我终于找到了这个问题的根源(我想!)

问题似乎在于 API 的输出是通过 json_decode 运行的,无论它是否是 JSON。 MySQL 错误导致了错误页面,而不是 JSON 响应,当通过json_decode(由接收它的 API 处理代码)运行时,var_dump 产生了乱码,如上所述。

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 2011-03-25
    • 1970-01-01
    • 2011-01-17
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多