在php中javascript encodeURIComponent等效

时间:2011-08-08 19:09:59

标签: php javascript urlencode

我需要在PHP中将%F3%BE%AE%A2转换为此char“”。当我尝试使用

rawurldecode('%F3%BE%AE%A2');

然后它给出2个字符而不是1个字符。

如何正确转换?

修改 更具体地说,它是一个UTF-16代理char.it在javascript中给出\udbba\udfa2。现在 如果我想通过javascript API发送数据,那么我可以轻松地发送“”作为单个字符。 但出于安全考虑,我需要使用PHP。这就是问题开始的地方。用'%F3%BE%AE%A2'解码rawurldecode() along with utf-8 header似乎没有给我我想要的字符。 希望我已经解释过了。感谢您的赞赏。

1 个答案:

答案 0 :(得分:3)

实际上rawurldecode()正在给你正确的结果。当在utf-8中编码时,该字符由四个字节组成,并且url编码中的规则是将每个字节转换为%XX表示法。 rawurldecode()给你回复这4个字节,但可能你没有将你的页面编码设置为utf-8,所以你的浏览器误解了这些字节。将其添加到您的<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

你应该看到正确的角色。


这是我做的测试页:

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
    <?php echo rawurldecode('%F3%BE%AE%A2'); ?>
</body>
</html>

我在浏览器中看到的内容:


你要看的角色。