2011-02-07 60 views
2

这是事情。我有友好的URL一样友好URL中的西里尔字符问题

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

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

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

请帮忙! :(

+0

在URL中不允许非英文字符,因此,没有办法。 – 2011-02-07 20:17:31

回答

5

的文本只是被编码到适合的URL规范。

回声出数据记录到日志,看看有什么你实际上是试图传递给数据库。

你应该。能够将其与urldecode解码

2

其实,火狐在这里骗你:该URL实际上是URL编码,但显示为如果不是这样的复制粘贴和检索它的服务器上会。有编码的URL。

(不知道其他浏览器以同样的方式行事。)

4

以上答案是好的,但如果你想使用西里尔路由是不够的。例如,如果你有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))); 

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