我注意到parse_str
的以下行为。
我有一串url参数,例如:
"cat=sphd&bpmin=100&bpmax=500&xf=1229_Nackenb%FCgel%7E1231_Bluetooth%7E1999_Sony"
如果我执行parse_str
,则包含无效字符的最后一个参数如下所示:
[params] => Array
(
[cat] => sphd
[bpmin] => 100
[bpmax] => 500
[xf] => 1229_Nackenb�gel~1231_Bluetooth~1999_Sony
基本上json_encode
失败的地方:我需要它来进行缓存(在框架下)。
问题:如何json_encode
用这样的字符组成数组或如何将parse_str
的输出更正为json_encode
?
谢谢。
答案 0 :(得分:0)
URL编码的值%FC
表示 byte FC
,在ISO-8859-1中解释为“ü”。 json_encode
期望使用UTF-8编码的字符,而且您显然也是这样,这就是为什么此字符无法正确显示并且json_encode
拒绝它的原因。
如果您可以更改该URL的出现位置,请对 UTF-8编码字符进行URL编码,以便获得%C3%BC
。如果您无法在此处进行修复,则需要使用iconv
,mb_convert_encoding
或敢于utf8_encode
将已解析的字符串从ISO-8859-1转换为UTF-8。 (这几乎是不合适的,但是这里只是一次)。