Eli*_*nko 1 php json url-encoding
我有一个带有 URL 编码符号的查询字符串:
\n\n$wm_string = "LMI_MODE=1&LMI_PAYMENT_DESC=%CF%EE%E6%E5%F0%F2%E2%EE%E2%E0%ED%E8%E5+Plan+Z";\n我需要用 PHP 将其转换为 JSON,但是json_encode返回一个空字符串。
这是我的 PHP 代码:
\n\nparse_str($wm_string, $_REQUEST);\nvar_dump($_REQUEST);\necho "JSON:".json_encode($_REQUEST);\n结果如下:
\n\narray(1) { ["LMI_MODE"]=> string(46) "1?LMI_PAYMENT_DESC=\xd0\x9f\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x80\xd1\x82\xd0\xb2\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 Plan Z Online" } JSON:\n我应该怎么办?
\n\n更新:
\n\n预期结果是:
\n\n{ \n    "LMI_MODE":1,\n    "LMI_PAYMENT_DESC":"\xd0\x9f\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x80\xd1\x82\xd0\xb2\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 Plan Z Online" \n}\nUPDATE2:\n编码是 windows-1251,而json_encode似乎需要 UTF-8。有没有办法告诉json_encode解析时应该使用哪种编码?
自从json_encode仅适用于 UTF-8,并且文本采用 windows-1251,因此应将其从该编码转换为 UTF-8。
$wm_string = "LMI_MODE=1&LMI_PAYMENT_DESC=%CF%EE%E6%E5%F0%F2%E2%EE%E2%E0%ED%E8%E5+Plan+Z+Online";\n$wm_string = iconv("windows-1251", "UTF-8", $wm_string);\nparse_str(urldecode($wm_string), $result);\necho "JSON:".json_encode($result, JSON_UNESCAPED_UNICODE);\n输出:
\n\nJSON:{"LMI_MODE":"1","LMI_PAYMENT_DESC":"\xd0\x9f\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x80\xd1\x82\xd0\xb2\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 Plan Z Online"}\n