Php 如何用值上的三个点解码JSON
我做了一些研究,但似乎找不到答案Php 如何用值上的三个点解码JSON,php,Php,我做了一些研究,但似乎找不到答案 https://stackoverflow.com/users/157957/imsop https://stackoverflow.com/users/1136527/alex-mcmillan https://stackoverflow.com/users/19068/quentin https://stackoverflow.com/users/13508/%C3%81lvaro-gonz%C3%A1lez 问题: 我从带有以下json的
https://stackoverflow.com/users/157957/imsop
https://stackoverflow.com/users/1136527/alex-mcmillan
https://stackoverflow.com/users/19068/quentin
https://stackoverflow.com/users/13508/%C3%81lvaro-gonz%C3%A1lez
问题:我从带有以下json的
json\u decode()
返回一个空值:
{
"sku": "Yumeida/A-6083/Pink/28",
"quantity": 1,
"variation": "…, size:EU:28"
}
经过测试,我发现通过删除variation
键中的三个点,JSON返回了一个预期的数组。但我不明白为什么这三个点会导致这个错误
在解码之前,我尝试var\u dump
JSON,这就是我得到的:
string '[{"sku": "Yumeida/A-6083/Pink/28", "quantity": 1, "variation": "�, size:EU:28"}]' (length=80)
有一个“�" (黑色方框中的问号)。这是字体问题吗?还是其他问题
附加信息:JSON是从MySQL数据库中检索到的
编辑:根据一位评论员的建议,在上,三个点(
…
)被解析为水平省略号(),我认为问题在于PHP认为这三个点是一个splat操作符()。因此,您可能必须用其他内容替换省略号或完全删除它,例如str_replace(“…”,“,$string)
当前解决方案来自@TsV()。
使用mb\u convert\u encoding
功能�代码>现在显示为常规?
,并且没有使脚本崩溃。
我现在要坚持这一点,如果有人知道如何保留这些点,请张贴答案
谢谢所有试图给出答案的人
https://stackoverflow.com/users/157957/imsop
https://stackoverflow.com/users/1136527/alex-mcmillan
https://stackoverflow.com/users/19068/quentin
https://stackoverflow.com/users/13508/%C3%81lvaro-gonz%C3%A1lez
您应该将默认字符集设置为UTF-8:
默认值\u charset=“utf-8”
如果要输出UTF-8编码字符,还需要确保将Web服务器设置为输出UTF-8。在Apache中,这可以通过httpd.conf文件中的设置:
AddDefaultCharset UTF-8
之后,您的结果如下所示:
字符串(69)“{”变体“:…,大小:EU:28”,“跟踪代码“:“LXRP-1868511636”}”可能是一个编码问题,其中“三个点”被解释为单个?这是您真正的JSON还是您手动转录的?…
(U+002E:句号U+002E:句号U+002E:句号U+002E:句号)和…
(U+2026:水平省略号)非常不同。您可以通过调用获取错误的详细信息。您好,JSON实际上来自Excel电子表格,上面有…
,我曾经将其转换为JSONI get格式错误的UTF-8字符,可能编码不正确
@IMSoP,谢谢。目前正在寻找修复方法。PHP是显而易见的uly(这是PHP,所以可能不太明显)不会尝试像评估PHP代码一样评估内容。我将我的字符集se设置为UTF-8,还发现了这个标题('content-Type:text/html;charset=UTF-8');
,我也需要这个吗?