将URL编码的字符串转换为UTF-8

3
昨天我遇到了一个问题,无法从URL中获取一些Unicode字符串。实际上我使用的是CodeIgniter框架,URL段将被传递到控制器/函数(参数)中。我不知道是CI改变了编码还是其他原因。在我的HTML页面和地址栏中,直到我得到这些Unicode段落之前,都有正确的编码。
例如:
localhost/df-gamez/news/افتتاح-جدید-سایت-تیم-دریم-فکتوری

最后的一段是波斯语字符,它在 UTF-8 下正常显示。但当我在代码中获取它时,它会变成这样:
%d8%a7%d9%81%d8%aa%d8%aa%d8%a7%d8%ad-%d8%b3%d8%a7%db%8c%d8%aa-%d8%ac%d8%af%db%8c%d8%af-
%d8%aa%db%8c%d9%85-%d8%af%d8%b1%db%8c%d9%85-%d9%81%da%a9%d8%aa%d9%88%d8%b1%db%8c

我试过使用mb_encode将其转换为UTF-8,但是没有成功。我的HTML页面和控制器文件都是以UTF-8 Without BOM格式进行格式化的。

祝一切顺利!

1个回答

9
使用 urldecode 函数进行解码。
echo urldecode("%d8%a7%d9%81%d8%aa%d8%aa%d8%a7%d8%ad-%d8%b3%d8%a7%db%8c%d8%aa-%d8%ac%d8%af%db%8c%d8%af-%d8%aa%db%8c%d9%85-%d8%af%d8%b1%db%8c%d9%85-%d9%81%da%a9%d8%aa%d9%88%d8%b1%db%8c");

这将为您提供 在DreamFactory上启动新网站


它给了我 错误-代码-行数-文件名 - MahanGM
@MahanGM,你是否在HTML头部添加了这个<meta http-equiv="Content-type" content="text/html; charset=utf-8"> - xdazz
是的,我第一个说了。页面上是正确的。此外,我尝试了iconv,就像urldecode页面上有人提到的那样。 - MahanGM
真是太神奇了!我不知道为什么会这样 :). 我想我找到问题所在了。因为控制器中头部通常没有定义字符集,所以我应该添加一个。但是CI文档并没有提到这一点! - MahanGM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接