当$ urlGoBack变量包含像“é”这样的法语重音字符时,以下内容无法正常工作,即使我之前确保使用mb_convert_encoding()函数将其传递给标题,就像它应该的那样。
header("Location: " . $urlGoBack);
我被带到的网址“é”已更改为%E9,这就是我猜的URL。
HTML charset是iso-8859-1,而mb_detect_encoding($ urlGoBack)返回UTF-8。
另一方面,如果我尝试用
转换它$urlGoBack = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $urlGoBack);
或
$urlGoBack = mb_convert_encoding($urlGoBack, "ISO-8859-1", "UTF-8");
然后mb_detect_encoding($urlGoBack)
返回ASCII并且“é”消失,并且URL出错。
令人惊讶的是,当我尝试看似微不足道的
$urlGoBack = mb_convert_encoding($urlGoBack , "UTF-8", "UTF-8");
有什么建议吗? 感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
您需要使用urlencode($ urlGoBack),如下所示:
header("Location: " . urlencode($urlGoBack));