IE 未使用 Unicode 字符正确重定向 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 包括网站的域名。站点发送 text/html; charset=utf-8
作为其内容类型。
我尝试过:
- 将
AddDefaultCharset utf-8
指令添加到 httpd.conf。 - 使用
rawurlencode()
对位置 URL 进行编码。 - 在
Location
标头之前发送header("Content-Type: text/html; charset=utf-8");
。 - 关闭gzip内容编码
- 通过
utf8_encode()
和utf8_decode()
发送URL,
但IE仍然无法识别URL的编码。有什么建议吗?
On my site I'm sending a Location header with UTF-8 encoded Unicode data like this:
<?php
header("Location: http://sr.wikipedia.org/sr/Србија");
exit;
?>
In Internet Explorer it sends the user to: http://sr.wikipedia.org/sr/Србија
.
Every other browser, it sends the user to http://sr.wikipedia.org/sr/Србија
, which is
I'm running Apache 2 on Ubuntu boxes and the URLs in the Location header include the site's domain name. The site sends out text/html; charset=utf-8
for its Content-Type.
I've tried:
- Adding the
AddDefaultCharset utf-8
directive to httpd.conf. - Encoding the location URL using
rawurlencode()
. - Sending
header("Content-Type: text/html; charset=utf-8");
before theLocation
header. - Turning off gzip content-encoding
- Sending the URL through
utf8_encode()
andutf8_decode()
But I.E. still wont recognize the URL's encoding. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您忘记了标头字段名称,并且需要使用
rawurlencode
正确编码 URI 路径:You forgot the header field name and you need to encode the URI path properly using
rawurlencode
: