Baranov_Dron
>
Чем сервер(допустим апач) руководствуется для
>
проставления этой строки?
Для задания MIME type, как уже и сказал камрад
Gas, он руководствуется расширением файла ( conf/mime.types ).
Для задания же кодировки он использует значение директивы AddDefaultCharset если MIME type запрашиваемого ресурса text/plain или text/html.
Существует модуль mod_charset_lite (со второй версии) который теоретически и должен заниматься такими вещами. Но:
1) он экспериментальный еще (
http://httpd.apache.org/docs/2.2/mod/mod_charset_lite.html ).
2) тестил на винде, работает не корректно.
Поэтому сейчас Апач отдает файл в той кодировке, в которой этот файл был сохранен. Т.е. Апач берет тупо поток байтов из файла и передает их как есть. Проблема определения кодировке лежит на браузере.
К слову сказать, с данной задачей все современные браузеры справляются вполне успешно. Поэтому при простом чтении файла браузером через веб сервер все нормально. Проблемы могут возникнуть в случае
когда файл читает скрипт (удаленный или локальный, мой случай как раз удаленный) и выводит его содержимое на странице.
При этом в самом скрипте используется одна кодировка, скрипт через HTTP заголовки явно задает её, но кодировка файла и то, что указывает скрипт не совпадают, а сам скрипт ни какого декодирования не делает. Получаем в теле страницы кусок текста кракозябрами . Если при этом внутри скрипта ведется какая либо обработака содержимого файла, а не просто вывод как есть, то искаженные данные уйдут на клиент и никаким переключением кодировок в браузере тексте прочесть не получиться. Данные будут искажены скриптом, текст из файла станет не читаемым.
Вроде изложил все доходчиво.
>
Но что главнее для браузера всего, какой приоритет?
Не очевидные истины. Meta тег против HTTP header. Кто кого?