PHP';s变量转储/打印输出是乱码-编码问题?
我遇到了一个问题,在服务器上,PHP';s变量转储/打印输出是乱码-编码问题?,php,debugging,character-encoding,gzip,Php,Debugging,Character Encoding,Gzip,我遇到了一个问题,在服务器上,var\u dump和print\r的输出完全乱码打印\u r输出纯胡言乱语(例如��]{W�8.�����-…等),而var\u dump至少给出了字符串(1664),然后是类似的胡言乱语(尽管这次用双引号括起来) 这看起来像是一个字符编码问题,但我找不到任何编码来解决它(我不知道为什么仅仅转储一个PHP对象就应该输出非ascii字符),和echo工作正常。或者,我想这可能是gzip问题。不管怎样,我怀疑这一定是PHP或Apache配置中的问题,但我不知道如何修复
var\u dump
和print\r
的输出完全乱码<代码>打印\u r输出纯胡言乱语(例如��]{W�8.�����-代码>…等),而var\u dump
至少给出了字符串(1664)
,然后是类似的胡言乱语(尽管这次用双引号括起来)
这看起来像是一个字符编码问题,但我找不到任何编码来解决它(我不知道为什么仅仅转储一个PHP对象就应该输出非ascii字符),和echo
工作正常。或者,我想这可能是gzip问题。不管怎样,我怀疑这一定是PHP或Apache配置中的问题,但我不知道如何修复它
如果有人对如何解决这个问题有任何建议,我将不胜感激
更新:在进一步调查中,这似乎是我试图转储的特定对象特有的问题。正在讨论的对象是解码JSON请求的(通过curl)从API。是否有可能json\u decode
或curl
会被错误配置/破坏编码?无论如何,我终于找到了这个问题的根源(我想!)
问题似乎是API的输出是通过json\u decode
运行的,不管它是否是json。MySQL错误导致了一个错误页面,而不是json响应,当通过json\u decode
运行时(通过接收它的API处理代码)在var\u dump
产生上述乱码字符色拉之前。可能的重复:不,据我所知,这是一个不同的问题。这不是一个一般的编码问题。这是一个关于print\r
和var\u dump
输出的问题。你到底想打印什么?我正在尝试转储一个PHP object表示一个API响应。有趣的是,我可以转储字符串和数组,看起来还可以,但是这个特定的对象被完全乱码了。这肯定不是“可能重复”问题的答案——正如问题中所述,(1)我尝试了不同的编码,和(2)如果这是一个通用的HTML/HTTP编码问题,那么它似乎不太可能只影响var\u dump
/print\r