PHP URL编码特殊字符失败



我把我的网站移到了一个新的主机上。它有链接(包括来自我不管理的其他网站的内部和外部链接(,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'];
?>

相关内容

  • 没有找到相关文章

最新更新