昨天我遇到了从 URL 获取一些 Unicode 字符串的问题。实际上我使用 CodeIgniter 并且 URL 段将被传递到 Controller /函数( 参数 )。我不知道是 CI 改变了编码还是别的什么。我在 HTML 页面的内容和地址栏中都有正确的编码,直到我得到那些 Unicode 段。
例如:
localhost/df-gamez/news/افتتاح-جدید-سایت-تیم-دریم-فکتوری
最后一段是 UTF-8 下的 perisan 字符。它在任何地方都正确存在,但是当我在我的代码中得到它时,它会变成这样:
%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 文件都被格式化为没有 BOM 的 UTF-8。和平出来!
最佳答案
使用 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");
会给你
افتتاح-سایت-جدید-تیم-دریم-فکتوری
关于php - 将 URL 编码的字符串转为 UTF-8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7786215/