IE没有使用Unicode字符正确重定向Location头

时间:2011-02-03 09:15:15

标签: php internet-explorer unicode http-headers location

在我的网站上,我发送一个带有UTF-8编码的Unicode数据的Location标头,如下所示:

<?php
    header("Location: http://sr.wikipedia.org/sr/Србија");
    exit;
?>

在Internet Explorer中,它将用户发送到:http://sr.wikipedia.org/sr/Србија

每隔一个浏览器,它就会将用户发送到http://sr.wikipedia.org/sr/Србија,即

我在Ubuntu盒子上运行Apache 2,而Location头中的URL包含该站点的域名。该网站为其Content-Type发送text/html; charset=utf-8

我试过了:

  • AddDefaultCharset utf-8指令添加到httpd.conf。
  • 使用rawurlencode()编码位置网址。
  • header("Content-Type: text/html; charset=utf-8");标题前发送Location
  • 关闭gzip内容编码
  • 通过utf8_encode()utf8_decode()
  • 发送网址

但是I.E.仍然不会识别URL的编码。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您忘记了标题字段名称,您需要使用rawurlencode正确编码URI路径:

header("Location: http://sr.wikipedia.org/sr/".rawurlencode("Србија"));