我把我的网站移到了一个新的主机上。它有链接(包括来自我不管理的其他网站的内部和外部链接(,URL中的重音已经停止工作。显然,该网站使用了ISO-8859-1和新主机UTF-8我正试图用PHP来解决这个问题。
单词";condición";在链接中看起来像:
condici%F3n
返回404,但如果我写
condici%C3%B3n
或
condición
在地址栏上,它运行良好。
到目前为止,我用以下代码打印出了正确的URL:
<?php
mb_internal_encoding("iso-8859-1");
mb_http_output( "iso-8859-1" );
ob_start("mb_output_handler");
$value = $_GET['termino'];
echo $value;
?>
https://example.com/page.php?termino=condici%F3n
- 打印条件
当我试图传递该单词并重定向到URL 时,问题就来了
<?php
mb_internal_encoding("iso-8859-1");
mb_http_output( "iso-8859-1" );
ob_start("mb_output_handler");
$value = $_GET['termino'];
header("Location: https://example.com/$value", true, 301);
?>
它切换回:
condici%F3n
为什么会发生这种情况?我该如何解决这个问题?
<?php
mb_internal_encoding("iso-8859-1");
mb_http_output( "iso-8859-1" );
ob_start("mb_output_handler");
$value = urlencode($_GET['termino']);
header("Location: https://example.com/$value", true, 301);
?>
现在使用urldecode((打印
<?php
echo urldecode($_GET['value'];
?>