Joomla !3从URL中剥离非英语和特殊字符


Joomla! 3 strips non-English and special chars from URL

我用的是Joomla!3.3,我的实际URL是这样的:

my_domain.com/component/newsletter/unsubscribe/email-domain.com/25

组件的router.php:

function newsletterBuildRoute(&$query) {
    $segments = array();
    $segments[] = $query['method'];
    $segments[] = $query['email'];
    $segments[] = $query['id'];
    unset($query['method']);
    unset($query['email']);
    unset($query['contact_id']);
    return $segments;
}
function newsletterParseRoute($segments) {
    $vars = array();
    $vars['method'] = $segments[0];
    $vars['email'] = $segments[1];
    $vars['contact_id'] = $segments[2];
    return $vars;
}

但是当我尝试这个时:

echo JFactory::getApplication()->input->get('email');

我得到:

emaildomain.com //  '@' is stripped

并且当我在url中放入任何非英文字符时,它也会被剥离。

你知道为什么会这样吗?

p。S:我在全局配置中将unicode别名设置为yes

如果您参考JInput的Joomla文档,您将看到有作为参数添加的过滤器:

http://docs.joomla.org/Retrieving_request_data_using_JInput

那么你可以试着这样做:

echo JFactory::getApplication()->input->get('email', null, 'RAW');

我使用null作为第二个参数,这应该是默认值。