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

时间:2011-10-16 18:04:52

标签: php codeigniter url character-encoding

昨天我遇到了从URL获取一些Unicode字符串的问题。实际上我使用CodeIgniter,URL段将传递到控制器/函数(参数)。我不知道CI是否改变了编码,或者它是其他的东西。我在我的HTML页面中的内容和地址栏中都有正确的编码,直到我得到那些Unicode段。

例如:

localhost/df-gamez/news/افتتاح-جدید-سایت-تیم-دریم-فکتوری

最后一段是perisan字符,属于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页面和Controller文件都被格式化为UTF-8而没有BOM。

和平了!

1 个答案:

答案 0 :(得分:6)

使用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");

会给你افتتاح-سایت-جدید-تیم-دریم-فکتوری