codeigniter不会重定向到utf-8网址

时间:2015-08-15 12:38:22

标签: php codeigniter url redirect utf-8

我正在尝试使用Codeigniter 3.0将搜索表单实现到我的网站,并且我遇到了redirect()方法的一些问题。

我想要做的是当我输入一些字符串并按Enter键时,它会对控制器执行发布请求,然后控制器将获取字符串并将当前网址重定向到{{1} }

所以,这是我的代码:

搜索表单:

http://example.com/search/string

获取搜索字符串并执行重定向的控制器:

<form action="/search" method="post" accept-charset="UTF-8">

config.php:

public function do_search() {
    $search = $this->input->post('search');

    log_message('debug', 'search: ' . $search);

    if ($search) {
       redirect('search/' . $search, 'refresh');
    } else {
       redirect('/', 'refresh');
    }
}

另外,我的基本控制器上有以下代码:MY_Controller

$config['permitted_uri_chars'] = 'üÜöÖğĞıİəƏçÇşŞ a-z 0-9~%.:_\-';

现在,当我在搜索表单上键入“həə”时,它会重定向,但网址会变得像“hÉÉ”。如您所见,我正在我的控制器上记录搜索字符串,正确打印。 (如“həə”)。

我错过了什么吗?任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

非ascii支持是软件中的一般问题,在浏览器相关软件中是一个非常特殊的问题。你应该做的是,获取传入的值并具有一种逻辑并进行重映射。 Codeigniter具有内置重映射功能。

它被称为:

function _remap($method)
    {
      // here your logic

    }

您可以在每个控制器中使用此功能。

小tipp:如果你支持多语言,那么你应该在每个请求中转移你的GET或POST或Cookie中的语言,并且有一种逻辑。否则你会遇到麻烦。

答案 1 :(得分:0)

我写了一个小的jQuery代码来进行重定向,它在我的情况下确实有效。

<HTMLQuestion  xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsd" >
<HTMLContent>
 <![CDATA[
<!DOCTYPE html> 
<html>
 <head> 
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <script language = "javascript"  type='text/javascript' >
      $(document).ready(function()
      {
          alert("iFrame is ready");
      });
  </script>