【问题标题】:Problem with cyrillic characters in friendly url友好网址中的西里尔字符问题
【发布时间】:2011-06-22 23:58:09
【问题描述】:

事情就是这样。我有友好的网址,例如

http://site.com/blog/read/мъдростта-на-вековете

http://site.com/blog/read/green-apple

最后一段实际上是博客文章的友好标题。问题是当我尝试将该段传递给数据库时,西里尔字体变成类似 %D1%8A%D0%B4%D1%80%D0%BE%D1%81%D1%8 并且无法匹配数据库记录。在我浏览器的地址栏中,它看起来很正常(мъдростта-на-вековете),但如果我选择“复制网址位置”,最后一段再次变成这些奇怪的字符。我正在使用 CodeIgniter 并且所有内容都设置为 UTF-8。

请帮忙! :(

【问题讨论】:

  • 网址中不允许使用非英文字符,因此没有办法。
  • 其实是允许的

标签: php mysql codeigniter friendly-url


【解决方案1】:

文本只是被编码以符合 URL 规范。

将数据回显到日志中,以查看您实际尝试传递给数据库的内容。

您应该可以使用urldecode 对其进行解码。

【讨论】:

    【解决方案2】:

    以上答案都可以,但是如果您想使用带有西里尔字母的路由,那是不够的。例如,如果您有http://site.com/блог/статия/мъдростта-на-вековете,您将不得不这样做:

    config/routes.php$route['блог/статия/(:any)'] = "blog/article/$1";

    system/core/URI.php,在function _explode_segments(),可以改

    $val = trim($this->_filter_uri($val));
    

    $val = urldecode(trim($this->_filter_uri($val)));
    

    这将解决上述问题加上控制器和功能。

    【讨论】:

      【解决方案3】:

      实际上,Firefox 在这里欺骗了您:该 URL 实际上是经过 url 编码的,但显示的好像不是。因此,在服务器上复制粘贴和检索它会对 URL 进行编码。

      (不确定其他浏览器的行为是否相同。)

      【讨论】:

        猜你喜欢
        • 2010-11-02
        • 1970-01-01
        • 2015-05-19
        • 2020-08-14
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-20
        相关资源
        最近更新 更多