PHP中的URL解码

voj3qocg  于 2022-12-16  发布在  PHP
关注(0)|答案(5)|浏览(101)

我尝试使用PHP的urldecode函数来解码这个URL字符串:

urldecode("Ant%C3%B4nio+Carlos+Jobim");

这应该是输出。。

'Antônio Carlos Jobim'

。但是却在做这个

'Antônio Carlos Jobim'

我已经在JS-based online decoder中测试了这个字符串,取得了很大的成功,但是似乎不能在服务器端执行此操作。有什么想法吗?

q3aa0525

q3aa05251#

您的字符串也是 * UTF-8编码的。这将工作:

echo utf8_decode(urldecode("Ant%C3%B4nio+Carlos+Jobim"));

产出:“安东尼奥·卡洛斯·若宾”。

i5desfxk

i5desfxk2#

实际上,您得到了所需的输出,但它没有被解释为UTF-8。如果这是在HTTP应用程序上,你应该发送一个头或一个Meta标记(或两者),这将告诉客户端使用UTF-8。

**编辑:**例如:

// replace text/html with the content type you're using
header('Content-Type: text/html; charset=UTF-8');
xggvc2p6

xggvc2p63#

当我做

<?php
echo urldecode("Ant%C3%B4nio+Carlos+Jobim");
?>

它的显示正确在我的浏览器一样
安东尼奥·卡洛斯·若宾
我用XAMPP测试过

wfauudbj

wfauudbj4#

另一种选择是:

<?php
$smthing = 'http%3A%2F%2Fmysite.com';
$smthing = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($smthing)); 
$smthing = html_entity_decode($smthing,null,'UTF-8');
echo $smthing;
?>

输出变为:http://mysite.com

ozxc1zmp

ozxc1zmp5#

在回显到页面之前是否也使用htmlenteties?当我刚刚测试你的代码时,它只在urldecode("Ant%C3%B4nio+Carlos+Jobim");部分运行得很好,但是当我运行htmlentities时,我得到了和你一样的输出。
这似乎是UTF-8字符和PHP如何处理htmlentities函数的问题。

相关问题