Веб-сервер Apache, похоже, ДЕЙСТВИТЕЛЬНО не любит utf-8

Веб-сервер Apache, похоже, ДЕЙСТВИТЕЛЬНО не любит utf-8

Это меня действительно раздражает, поэтому я надеюсь, что кто-нибудь здесь сможет сказать мне, что я делаю не так. Я уже некоторое время запускаю веб-сервер Apache на своем ноутбуке с Windows 7, чтобы протестировать некоторые программные приложения, которыми я занимаюсь в свободное время. Недавно я заметил, что символы Unicode на моих страницах не отображаются правильно в моем браузере. Я провел то, что оказалось множеством бессмысленных тестов, и обнаружил, что символы на самом деле отправляются как правильный UTF-8, и я также добавил строку <meta http-equiv="Content-Type" content="text/html; charset=utf-8">в начало моего вывода html, которая должна была исправить проблему, но на самом деле ничего не сделала. Затем я потратил время, чтобы проверить заголовки HTTP-ответа, и увидел, что Apache отправляет обратно это:

HTTP/1.1 200 ОК
Дата: Вс, 19 июля 2015 18:18:40 GMT
Сервер: Apache/2.2.25 (Win32)
Кодирование передачи: фрагментированное
Тип содержимого: text/html; кодировка=iso-8859-1

Хорошо, это кажется довольно простой проблемой. Согласно Интернету, я могу исправить это, добавив AddDefaultCharset utf-8в свой файл httpd.conf. В файле не было никаких AddDefaultCharsetстрок, поэтому я добавил его внизу точно так, как он написан выше. Затем я перезапустил службу Apache и обнаружил, что проблема не изменилась. Итак, я перезапустил свой компьютер, теоретически, что я могу не знать, как правильно перезапустить Apache, но он все еще не отображает символы правильно, и он все еще отправляет charset=iso-8859-1заголовки.

Я также нашел веб-сайт, который предположил, что нечто под названием Windows VirtualStore может автоматически сохранять файл конфигурации где-то еще, просто чтобы подшутить надо мной, но я не верю, что это происходит, потому что я не могу найти никаких файлов Apache в каталоге VirtualStore. Кроме того, вы должны иметь возможность отключить VirtualStore, взяв на себя владение папкой, и я сделал это некоторое время назад, потому что он не позволял мне ничего менять иначе.

К сожалению, я даже не уверен, что еще посмотреть по этой проблеме. У кого-нибудь есть идеи?

решение1

Попробуйте создать HTML-файл из 3 строк, запросите его из браузера и проверьте заголовок. Это гарантирует отсутствие заголовков CGI или чего-либо, что мешает конфигурации вашего сервера.

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>

Продолжайте экспериментировать с конфигурацией сервера, пока этот файл не будет отправлен со charset=utf-8спецификацией в заголовке Content-type.

Далее попробуйте минимальную программу на Perl:

#!/usr/bin/perl   <-- or omit this line as you're on windows
binmode(STDOUT, ":utf8");
print qq(Content-type: text/html; charset=utf-8

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
);

Если это работает (отправляет правильный заголовок), то все остальное, что не работает, находится в ваших библиотеках, а не в конфигурации вашего сервера.

Связанный контент