【问题标题】:How to pass unicode character in URL codeigniter?如何在 URL codeigniter 中传递 unicode 字符?
【发布时间】:2018-07-02 04:43:06
【问题描述】:

我知道有很多关于这个热带的帖子,但我的问题是不同的。所以请不要投票关闭这个问题。

为了在 URL 中允许 unicode 字符,我在 allowed_uri_chars 中设置了 null ,如下所示

$config['permitted_uri_chars'] = '';

因此,我可以将 unicode (Bangali) 传递给 URL,但是当我发送特定单词时出现以下错误,

URL : 控制器/方法/অনুষ্ঠান(这个词有错误)

但错误文本应该是
“您提交的 URI 包含不允许的字符”,所以我认为问题出在哪里。提前致谢。

【问题讨论】:

    标签: php codeigniter unicode


    【解决方案1】:

    你必须像下面这样通过:-

    $config[’permitted_uri_chars’] = ‘?&=a-z 0-9~%.:_-’;
    

    【讨论】:

      【解决方案2】:

      保持你的 $config['permitted_uri_chars'] 为默认值
      前任。 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

      要传递 unicode 字符,只需按照以下简单步骤:

      1. 通过 url 传递值时使用 urlencode
        前任。 "urlencode('অনুষ্ঠান')"
      2. 在控制器中使用 uri 段并通过使用 urldecode 解码 url 来获取它。
        前任。 urldecode($this->uri->segment(2))

      使用 urlencode 和 urldecode 你可以轻松地在 url 中传递 unicode 字符,不仅在 codeigniter 中,而且在其他 php 项目中。

      希望它有所帮助。 谢谢

      【讨论】:

        【解决方案3】:

        这不是 CodeIgniter 的问题,而是您的 .htaccess 重写规则。

        如果您想为漂亮的 url 接受任何语言,请打开您的根文件夹中的 .htaccess 文件,其中有您的 CI index.php(例如 public_html)并查找包含“index.php”的重写规则。然后将正则表达式更改为 ^([^.]+)/?$

        例如

        RewriteRule ^([^\.]+)/?$ index.php?/$1 [L]

        干杯!

        【讨论】:

        • 谢谢。不是我能得到 Unicode 字符。但它们的编码就像“%D8%B9%D9%85%D9”。如何获取自动解码的参数?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-29
        • 2020-11-29
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多