You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中如何原样打印URL传入的特殊字符参数

解决CodeIgniter中传递含欧洲特殊字符URL参数并原样输出的问题

我来帮你搞定这个问题!要在CodeIgniter里正确传递并保留带欧洲特殊字符的参数,需要从URL编码、框架配置和控制器处理这几个环节配合,具体步骤如下:

  • 第一步:对参数进行URL编码
    浏览器通常会自动编码URL中的特殊字符,但手动处理能避免意外问题。你可以用PHP的rawurlencode()函数对参数进行编码,示例代码:

    $originalParam = 'MAINä,ë,ï,ö,ü,ÿ,Ä,Ë,Ï,Ö,Ü,Ÿ';
    $encodedParam = rawurlencode($originalParam);
    // 生成的URL就是 www.demo.com/controller/function/<?= $encodedParam ?>
    

    编码后的参数会变成MAIN%C3%A4%2C%C3%AB%2C%C3%AF%2C%C3%B6%2C%C3%BC%2C%C3%BF%2C%C3%84%2C%C3%8B%2C%C3%8F%2C%C3%96%2C%C3%9C%2C%C5%B8,这样传递不会出现字符丢失或乱码。

  • 第二步:修改CodeIgniter的URI许可字符配置
    默认情况下,CodeIgniter会过滤掉URI中不在许可列表里的字符,所以必须把这些欧洲特殊字符添加进去:

    • 如果你用的是CodeIgniter 3:打开application/config/config.php,找到$config['permitted_uri_chars'],修改为:
      $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-äëïöüÿÄËÏÖÜŸ,';
      
    • 如果你用的是CodeIgniter 4:打开app/Config/App.php,找到public $allowedCharacters,修改为:
      public $allowedCharacters = 'a-z 0-9~%.:_\-äëïöüÿÄËÏÖÜŸ,';
      

    注意要把逗号(,)也加进去,因为你的参数里包含逗号。

  • 第三步:控制器方法中获取并输出参数
    在控制器的目标方法里,直接获取URI传递的参数即可,CodeIgniter会自动帮你解码。同时要确保页面输出的字符集是UTF-8,避免浏览器解析乱码:

    public function your_target_function($param = '')
    {
        // 设置页面字符集为UTF-8
        header('Content-Type: text/html; charset=utf-8');
        // 直接输出参数,就能得到原样的特殊字符
        echo $param;
    }
    
  • 测试验证
    访问编码后的URL,比如www.demo.com/controller/your_target_function/MAIN%C3%A4%2C%C3%AB%2C%C3%AF%2C%C3%B6%2C%C3%BC%2C%C3%BF%2C%C3%84%2C%C3%8B%2C%C3%8F%2C%C3%96%2C%C3%9C%2C%C5%B8,页面应该会准确输出MAINä,ë,ï,ö,ü,ÿ,Ä,Ë,Ï,Ö,Ü,Ÿ。

内容的提问来源于stack exchange,提问作者Rahul Kalal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:22:23