IE неправильно перенаправляет заголовок Location с помощью символов Unicode - PullRequest
1 голос
/ 03 февраля 2011

На моем сайте я отправляю заголовок Location с данными Unicode в кодировке UTF-8, например:

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

В Internet Explorer он отправляет пользователю: http://sr.wikipedia.org/sr/Србија.

Любой другой браузер отправляет пользователя на http://sr.wikipedia.org/sr/Србија, то есть

Я использую Apache 2 на полях Ubuntu, а URL-адреса в заголовке Location содержат имя домена сайта.Сайт отправляет text/html; charset=utf-8 для своего Content-Type.

Я пытался:

  • Добавление директивы AddDefaultCharset utf-8 для httpd.conf.
  • Кодирование URL-адреса местоположения с помощью rawurlencode().
  • Отправка header("Content-Type: text/html; charset=utf-8"); перед заголовком Location.
  • Отключение кодировки содержимого gzip
  • Отправка URL-адреса через utf8_encode() и utf8_decode()

Но IE все еще не распознает кодировку URL.Есть предложения?

1 Ответ

2 голосов
/ 03 февраля 2011

Вы забыли имя поля заголовка, и вам необходимо правильно кодировать путь URI, используя rawurlencode:

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