考虑这个例子:
document.write(encodeURIComponent("ü"))
提供%C3%BC
,当以手动方式解码时,会ü
。
ü的字符代码是252(00FC),来自ISO8859-1。
为什么JS将其转换为%C3%BC? 我找不到任何可以解释这一点的东西。我的PHP不明白,我不知道如何在PHP中解码它。
修改
我从已经urldecoded的GET superglobal获取我的字符串。它解码不正确,我没有得到我想要的德语字母。为什么?第二次解码它没有任何作用。
我的PHP代码:
@$str = strtolower($_GET['s']);
$str = urldecode($str);
我从JS ajax调用得到我的GET varibale,其中参数通过encodeURIComponent()
传递
值得一提的是:escape()
将这封信转换为%FC
然后PHP没有问题。