如何在CodeIgniter中允许特殊字符(如:ä、é、î、ø、ù)出现在URI中
在URL中,不能直接使用特殊字符。
RFC 1738包含以下段落:
URL只能使用US-ASCII编码字符集中的可打印图形字符。
US-ASCII字符集中的字符列表可以在http://www.columbia.edu/kermit/ascii.html找到。
此外,该集合中的某些字符也被保留用于特定目的,例如"="和"&"字符。这些字符(以及未包含在US-ASCII字符集中的字符)必须使用%符号后跟字符引用进行编码。
您可以使用urlencode()在codeigniter中对这些值进行编码。例如,如果您使用redirect(urlencode(http://test.com/ä))重定向用户,则他们将被重定向到http://test.com/%E4,这是一个有效的URL。
要将此百分比代码解码回正常字符以在页面上显示,只需使用urldecode(),例如:
echo 'The character is: ' . urldecode($this->uri->segment(2));
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
这将允许特定字符在URI中使用,以便您的应用程序能够处理它们。