我做了一些研究,但似乎找不到答案。
问题:
我从awk 'FNR==NR {a[$0]++;next}{if ($1 in a && $2 in a) {print}}' input.txt edge.txt
返回了一个带有以下JSON的空值:
json_decode()
在测试中,我发现通过删除{
"sku": "Yumeida/A-6083/Pink/28",
"quantity": 1,
"variation": "…, size:EU:28"
}
键中的三个点,JSON返回了预期的数组。但是我不明白的是为什么三个点引起了这个错误?
我尝试在解码之前variation
JSON,这就是我得到的:
var_dump
有一个“。”(黑框中的问号)。这是字体问题吗?还是其他?
其他信息:JSON是从MySQL数据库中检索的。
编辑:
评论者建议在https://apps.timwhitlock.info/unicode/inspect上显示三个点(string '[{"sku": "Yumeida/A-6083/Pink/28", "quantity": 1, "variation": "�, size:EU:28"}]' (length=80)
)被解析为...
答案 0 :(得分:0)
当前解决方案来自@TsV(https://stackoverflow.com/users/10111639/tsv)。
使用mb_convert_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
答案 1 :(得分:0)
您应该将default_charset设置为UTF-8:
default_charset =“ utf-8”
如果您要输出UTF-8编码的字符,您还需要确保将Web服务器设置为输出UTF-8。在Apache中,可以在httpd.conf文件中进行设置:
AddDefaultCharset UTF-8
之后,您的结果如下: string(69)“ {” variation“:” ...,大小:EU:28“,”跟踪代码“:” LXRP-1868511636“}”
答案 2 :(得分:-5)
我认为问题在于PHP将3个点视为splat运算符(see here for more info)。因此,您可能需要用其他东西替换省略号或用str_replace('...','',$string)