【问题标题】:Turn URL encoded string into UTF-8将 URL 编码的字符串转换为 UTF-8
【发布时间】:2011-12-08 19:55:04
【问题描述】:

昨天我遇到了从 URL 获取一些 Unicode 字符串的问题。实际上我使用 CodeIgniter 并且 URL 段将被传递到控制器/函数(parameters)。我不知道是 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 页面和控制器文件都被格式化为没有 BOM 的 UTF-8。

和平!

【问题讨论】:

    标签: php codeigniter url character-encoding


    【解决方案1】:

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

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

    【讨论】:

    • 它给了我 ������-����-����-����-����-������
    • @MahanGM 你是否将这个<meta http-equiv="Content-type" content="text/html; charset=utf-8"> 添加到你的html 头部?
    • 是的。我先说了。在页面中是正确的。我也试过 iconv 就像在 urldecode 页面有人提到它。
    • 真是太棒了!我不知道为什么它会这样:)。我想我找到了问题所在。由于控制器从不包含头部中的任何字符集定义因为这很常见!所以我应该加一个。但是 CI 文档没有说明这一点!
    猜你喜欢
    • 2016-05-16
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2011-08-16
    • 2016-10-01
    • 2013-07-01
    相关资源
    最近更新 更多