0

当 $urlGoBack 变量包含像“é”这样的法语重音字符时,即使我之前使用 mb_convert_encoding() 函数确保它按照应有的方式传递给标题,以下内容也无法正常工作。

header("Location: " . $urlGoBack);

我被带到的 URL 已将“é”更改为 %E9,我猜这是它的 URL 等效项。

HTML 字符集是 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");

有什么建议么?谢谢。

4

2 回答 2

0

我认为您需要像这样编码网址

header("位置:" .urldecode($urlGoBack));

参考 php.net

于 2012-10-04T23:01:52.347 回答
0

您需要使用 urlencode($urlGoBack),如下所示:

header("Location: " . urlencode($urlGoBack));
于 2012-10-04T23:04:59.443 回答