У этой программы одна задача: получить по сети запрос и послать на него ответ. Что есть запрос? Формально, запрос - это указание веб-серверу, какой ресурс вы бы хотели получить. Под ресурсом я подразумеваю документ HTML. Итак, вы, набирая в адресной строке броузера какой-либо адрес на самом деле формируете запрос веб-серверу. Веб-сервер должен принять запрос. Понять его и обработать. Обработка означает передачу запрошенного ресурса или объяснение, почему ресурс не может быть предоставлен. Если вы не ошиблись в запросе и таковой ресурс имеются в наличии и вы его можете получить, то веб-сервер "берет" нужный документ HTML и передает его по сети вам. Причем, передает он его "как есть", т.е. без каких-либо модификаций. Так работает стандартный веб-сервер. Как видите, он, в сущности, очень похож на кладовщика. Что ему сказали - то он и выдал. Теперь мы немного пофантазируем. Пусть веб-сервер работает на компьютере под управлением одной из операционных систем семейства UNIX. Как мы уже знаем, русскоязычные HTML документы на таком компьютере созданы в одной из соответствующих кодировок ( iso-8859-5 или koi8-r ). Пусть, также, один из этих документов запрашивает человек, компьютер которого управляется операционной системой Windows. Внимание, вопрос. Сможет ли человек прочитать полученный от веб-сервера HTML документ если веб-сервер работает по вышеописанному алгоритму? Все зависит от самого документа. Если он соответствует общеизвестным спецификациям в плане интернационализации, то человек его прочитает. В противном случае ничего конкретного сказать нельзя... Соответствие спецификациям означает, что внутри HTML документа сказано, в какой он кодировке (какая кодовая таблица использовалась при его создании). Существует еще один нюанс. Ответ WWW-сервера состоит из двух частей: заголовка со служебной информацией и запрашиваемого вами ресурса. Среди служебной информации может присутствовать указание кодировки передаваемого ресурса (документа). В этом случае броузер будет ориентироваться именно на эту информацию. А если кодировка также указана внутри самого ресурса (документа)? Броузер это указание проигнорирует. Например, указанная WWW-сервером кодировка ресурса koi8-r, внутри документа стоит windows-1251. Допустим также, что и сам документ создан в кодировке windows-1251. Сможет ли броузер отобразить читабельный текст? Нет. Потому что он будет исходить из информации, полученной от WWW-сервера (koi8-r). Чтобы не ошибиться, надо знать установки нашего сервера по умолчанию (для персональных страниц!). Вот они: Файлы, имеющие расширения .html и .shtml отдаются с указанием кодировки koi8-r Файлы, имеющие расширения .htm и .shtm отдаются с указанием кодировки windows-1251 Следите, чтобы кодировки ваших HTML-документов соответствовали этим настройкам. Для виртуальных хостов все документы отдаются с указанием кодировки windows-1251 Для особо продвинутых сообщаю, что вы имеет возможность переопределять эти настройки в своих файлах .htaccess. Используйте директиву AddCharset: AddCharset windows-1251 .html .htm .shtml .shtm Здесь я полностью перекрыл установки по умолчанию и теперь все мои документы будут отдаваться с указанием кодировки windows-1251. |