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');
,我也需要这个吗?