我需要在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
似乎没有给我我想要的字符。
希望我已经解释过了。感谢您的赞赏。
答案 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>
我在浏览器中看到的内容:
你要看的角色。