我目前托管在Heroku上一个PHP Facebook应用程序,其中我使用卷曲,以获取有关从图形API用户的数据。不同的输出在不同的服务器
我有哪里传回的数据包含Unicode字符,在Heroku的系统上json_decode没有正确输出中的Unicode字符的问题。我本地系统上的输出(相同的代码)很好。
望着生JSON从图表回来后,我可以看到它包含Unicode转义字符如
{"id":"100003517896374","name":"Sky\u00e9 Mont\u00e1na","first_name":"Sky\u00e9","last_name":"Mont\u00e1na","link":"http:\/\/www.facebook.com\/skye.montana.73","username":"skye.montana.73","gender":"female","locale":"en_US"}
在我的本地系统,json_decode将其转换为下列对象:
stdClass Object ([id] => 100003517896374 [name] => Skyé Montána [first_name] => Skyé [last_name] => Montána [link] => http://www.facebook.com/skye.montana.73 [username] => skye.montana.73 [gender] => female [locale] => en_US)
在Heroku系统将其转换如下:
stdClass Object ([id] => 100003517896374 [name] => Skyé Montána [first_name] => Skyé [last_name] => Montána [link] => http://www.facebook.com/skye.montana.73 [username] => skye.montana.73 [gender] => female [locale] => en_US)
我对json的理解_decode是它会识别并正确解释unicode。在这种情况下,在Heroku上,它似乎识别unicode,但不能正确解释它。
是否有一些PHP设置需要修复?也许这是与magic_quotes有关吗?我已经将两台服务器设置为具有相同的magic_quotes选项(关),但它没有区别。
是的,在大多数情况下,如果你看到'é'(或类似)你有UTF8字节被解释为ISO-8859-1/Windows的1252(错误的头,正确的字节)。如果你看到'''你有ISO-8859-1/Windows-1252字节被解释为UTF-8(右标题,错误字节) – Esailija
@Garreth我正面临同样的问题。我发送一个JSON编码的二进制文件内容在发布请求到服务器,我使用json_decode()来解码它,并且输出包含这些垃圾字符。你能告诉我如何解决这个问题吗?在POST请求中设置哪些头部以避免这种情况? – anni