| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 16.04.2003
Адрес: Severodonetsk, Ukraine
Сообщения: 54
![]() |
Apache: AddDefaultCharset
Apache/2.0.49 (Win32)
Если в httpd.conf я устанавливаю AddDefaultCharset (неважно, какую именно кодировку я задаю - например, ISO-8859-1) - как сказано в комментариях к этому параметру, это первый шаг к интернационализации сайта - начинаются проблемы с Мозиллой. Все странички, которые я создаю, естественно, содержат meta с указанием соответствующего charset. Когда я в Мозилле (1.6) запрашиваю информацию о странице (Ctrl+I) - все мета-теги видны, в том числе и тот, который с charset. Но там же, в информации о странице, Мозилла мне говорит, что у страницы кодировка - ISO-8859-1 (т.е. та, которая задана в конфиге Апача как default). И пока я ручками не переключу кодировку отображения - русские буквы отображаются неправильно. IE (5.0) этому не подвержен. Но те страницы, которые установились с Апачем (стартовая страница, и страницы с документацией) отображаются правильно! Т.е. я чего-то проглядел в настройках самогО Апача. Перерыл весь конфиг - ничего (с моей точки зрения) имеющего к этой проблеме отношения, не нашел. Сейчас я пока закомментировал AddDefaultCharset (и Мозилла стала понимать тот charset, который задан в meta), но это ведь не решение проблемы! Подскажите, пожалуйста, где я ошибся в настройках. Наверняка ведь какая-то мелочь. Но когда таких мелочей слишком много (а их всегда много, когда начинаешь что-то изучать с нуля) - трудно все сразу "грокнуть"... |
|
|
|
|
# 3 | |
|
Junior Member
Регистрация: 16.03.2003
Адрес: 192.168.177.15
Сообщения: 78
![]() |
Сморим доку к апачу:
Цитата:
Мой совет, если ты имееш доступ к конфигам сервера, или есть возможность использовать .htaccess файлы - вообще не используй META тэги, а кодировку задавай непосредственно в настройках VirtualHost или в .htaccess директивы AddCharset или AddType я использую в .htaccess строчку AddType "text/html; charset=windows-1251" .htm .html .shtml а в cgi печатаю Content-type с нужным чарсетом... |
|
|
|
|
|
# 4 | |
|
Junior Member
Регистрация: 16.04.2003
Адрес: Severodonetsk, Ukraine
Сообщения: 54
![]() |
Цитата:
А если на чужом? Это мне нужно выяснить, как там настроен Апач, и ваять свой сайт в этой кодировке. А если придется переезжать на другой сервак, а там другая кодировка по умолчанию - придется весь сайт перекодировать? Неправильно это, по-моему. И, тем более, у меня есть наглядный пример страничек, которые правильно отображают свой чарсет, независимо от того, какой чарсет задан в настройках Апача по умолчанию. Вот я и хочу разобраться, как это сделано. |
|
|
|
|
|
# 5 | ||
|
Junior Member
Регистрация: 16.04.2003
Адрес: Severodonetsk, Ukraine
Сообщения: 54
![]() |
Цитата:
Default Charset добавляется к любому ответу, в HTTP-заголовках которого нет никаких параметров о его content type. Я правильно перевел цитату? Если правильно - тогда подскажите, пожалуйста, как еще, кроме мета-тегов, можно задавать кодировку документа. Цитата:
![]() Ну, а если нет доступа ни к .htaccess, ни, тем более, к httpd.conf - как поступать в таком случае? Неужели единственный способ - делать сайт именно в той кодировке, которая задана по умолчанию? |
||
|
|
|
|
# 6 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 16.03.2003
Адрес: 192.168.177.15
Сообщения: 78
![]() |
Да. Кодировка указанная в AddDefaultCharset вставляется в Content-type любого ответа в котором не указанна кодировка.
По стандарту HTTP 1.1 кодировка выбирается, в случае с апачам, в следующет порядке: - если нет то берется кодировка установленная с помощью .htaccess - если нет то из настройки VirtualHost в httpd.conf - если нет то из DefaultCharset сервера... - если нет - то нет... пускай бровзер сам разбирается... А вот кодировка указанная в META тэге - полностью на совести бровзеров. По моему, часть бровзеров META тэг используют только если кодировка не указанна сервером, а другая часть, в основном это старые бровзеры, используют _в любом случае_. В результате полный бардак... По сему, на кодировку в META тэге надежды возлагать не нужно, там более, что этот метод признан "устаревшим" и скорее всего будет искоретяться... А хостится нужно там, где есть .htaccess. Благо таких серваков море. А если нет, то на русских шарный серверах в основном кодировка windows-1251, значит на нее и ореентироваться... |
|
|
|
|
# 8 |
|
Junior Member
Регистрация: 16.04.2003
Адрес: Severodonetsk, Ukraine
Сообщения: 54
![]() |
Разобрался я с кодировками. Все оказалось до смешного просто.
AddDefaultCharset задает кодировку по умолчанию, которая сообщается сервером браузеру. Мозилла (1.6) это понимает, и считает, что документ именно в этой кодировке, невзирая на meta-теги. А IE (5.0) на это плюет, и пользуется исключительно информацией из meta-тега. Кроме AddDefaultCharset, есть еще директива AddCharset, которая устанавливает соответствие между расширением имени файла и кодировкой. Т.е. в этой директиве мы можем задать, что все файлы с расширением, например, .ru8, имеют кодировку КОИ8-Р, а с расширением .ru12 - windows-1251. И тогда Апач, передавая браузеру страницы с соответствующими расширениями, будет сообщать, какую кодировку имеют эти страницы (точно так же, как он сообщал о кодировке по умолчанию). И браузеры ведут себя соответственно - Мозилла показывает нужную кодировку (даже если она не задана мета-тегом), а ИЕ плюет на это и пользуется только мета-тегом. Вывод: AddCharset ставит в соответствие кодировку файлов их расширениям, и это соответствие отменяет действие ключа charset= в мета-теге (только для новых браузеров). AddDefaultCharset задает кодировку тех файлов, расширение которых не совпадает ни с одним из расширений, заданных в директивах AddCharset. Это также отменяет действие ключа charset= в мета-теге (тоже только для новых браузеров). (Я понимаю, что излагаю прописные истины, но сам я довольно долго разбирался в этом механизме, поэтому считаю, что этот пост может помочь быстрее разобраться таким же чайникам, как и я) |
|
|