1

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

HTTP/1.1 200 OK
Date: Sun, 19 Jul 2015 18:18:40 GMT
Server: Apache/2.2.25 (Win32)
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

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

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

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

1 ответ1

1

Попробуйте создать трехстрочный HTML-файл, запросите его в браузере и проверьте заголовок. Это обеспечивает отсутствие заголовков 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>
);

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .