Codeigniter中的UTF8字符

时间:2011-08-21 16:29:14

标签: php codeigniter utf-8

我有一个问题。我希望你能帮助我。我不会说英语,但我会尽力向我解释。

我来自阿根廷,所以,我必须使用“ñ”字符。对于搜索引擎优化,我想在网址中包含“ñ”一些单词,所以,例如,我有:

  • Controller:webdesign.php
  • 路线:$ route ['diseñoweb'] =“网页设计”;

但是,当我进入“www.domain.com/diseñoweb”时,它不起作用。我需要网址中的“ñ”字符。 有人知道我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:2)

首先,您需要在配置中允许使用该字符,例如,您可以拥有类似的内容......

$config['permitted_uri_chars'] = 'a-z 0-9_\-ñ'; 

然后,在第231行的system / core / URI.php上,替换

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", $str)) 

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", utf8_encode($str))) 

答案 1 :(得分:2)

您想要做的事情很可能无法正常工作,因为网址不能包含非ASCII字符。有关背景信息,请参阅here

我认为您需要为URLencoded版本创建路由,如下所示:

$route['dise%c3%b1oweb'] = "webdesign";

然后输入包含

的网址
diseñoweb

现代浏览器会自动对字符进行URL编码。

答案 2 :(得分:2)

你可以试试这个

$route[rawurlencode('diseñoweb')] = “webdesign”;