Кодировки web-документов
История возникновения
Кодировка представляет собой таблицу символов, где каждой букве алфавита (а также цифрам и специальным знакам) присвоен свой уникальный номер - код символа.
Стандартизирована только половина таблицы, т.н. ascii-код - первые 128 символов, которые включают в себя буквы латинского алфавита. И с ними никогда не бывает проблем. Вторая же половина таблицы (а всего в ней 256 символов - по количеству состояний, который может принять один байт) отдана под национальные символы, и в каждой стране эта часть различна. Но только в России умудрились придумать целых 5 различных кодировок. Термин "различные" обозначает то, что одному и тому же символу соответствует разный цифровой код. Т.е. если мы неправильно определим кодировку текста, то нашему вниманию предстанет абсолютно нечитаемый текст.
Кодировки появились исторически. Первая широко используемая российская кодировка называлась koi-8. Её придумали, когда адаптировали к русскому языку систему unix. Это было ещё в семидесятых - до появления персоналок. И до сих пор в unix это считается основной кодировкой.
Потом появились первые персональные компьютеры, и началось победное шествие dos. Вместо того, чтобы воспользоваться уже придуманной кодировкой, microsoft решила сделать свою, ни с чем не совместимую. Так появилась dos-кодировка (или 866 кодовая страница). В ней, кстати, были введены спецсимволы для рисования рамок, что широко использовалось в программах, написанных под dos. Например, в том же norton commander-е.
Параллельно с ibm-совместимыми развивались и macintosh-компьютеры. Несмотря на то, что их доля в России очень мала, тем не менее потребность в русификации существовала и, разумеется, была придумана ещё одна кодировка - mac.
Время шло, и 1990 году microsoft явила на свет первую успешную версию windows 3.0-3.11. А вместе с ней и поддержку национальных языков. И снова был проделан такой же фокус, как и с dos. По непонятным причинам они не поддержали ни одну из уже существовавших ранее (как это сделала os/2, принявшая за стандарт dos-кодировку), а предложили новую win-кодировку (или кодовая страница 1251). Де-факто она стала самой распространённой в России.
И, наконец, пятый вариант кодировки связан уже не с конкретной фирмой, а с попытками стандартизации кодировок на уровне всей планеты. Занималась этим iso - международная организация по стандартам. И, догадайтесь, что они сделали с русским языком? Вместо того, чтобы принять за "стандартную русскую" какую-нибудь из вышеописанных, они придумали ещё одну (!) и назвали её длинным неудобоваримым сочетанием iso-8859-5. Разумеется, она тоже оказалась ни с чем не совместимой. И в настоящий момент эта кодировка практически нигде не применяется. Кажется, её используют только в базе данных oracle. По крайней мере, я ни разу не видел текст в этой кодировке. Тем не менее, её поддержка присутствует во всех броузерах.
Сейчас идет работа над созданием новой универсальной кодировки (unicode), в которой предполагается в одну кодовую таблицу запихнуть все языки мира. Тогда точно проблем не будет. Для этого на каждый символ отвели 2 байта. Таким образом, максимальное количество знаков в таблице расширилось до 65535. Но до момента, когда все перейдут на unicode, остаётся ещё слишком много времени.
web-дизайн и кодировки
А теперь о том, как все эти кодировки связаны с web-дизайном. Проблема заключается как в web-серверах, так и в броузерах. Обе составляющие должны общаться на одном языке и в одной кодировке, и только в этом случае броузер будет понимать то, что ему посылает сервер.
Со стороны сервера мы должны установить систему, которая умеет предварительно посылать сообщение о том, в какой кодировке будет прислана страница. А броузер это сообщение должен принять и, соответственно, настроиться на нужное отображение. Если всё сделано корректно, то проблем не возникает. Но действительность вносит свои коррективы и неправильная настройка web-сервера может привести к тому, что, послав сообщение о том, что сейчас будет страничка в кодировке win-1251, сервер присылает ее в koi-8. Разумеется, броузер путается, ведь он не в состоянии самостоятельно определить кодировку страницы. Он всего лишь пользуется указаниями сервера и, соответственно, показывает страничку неправильно.
Имеется способ указать кодировку странички не на сервере, а непосредственно в html-коде. Для этого используется специальная версия meta-тега с параметром charset, задающим нужный язык. Например, для странички, написанной в кодировке win1251, соответствующий код будет выглядеть так:
Но, к сожалению, с этим тегом связано несколько проблем. В России очень распространён способ, при котором web-сервер автоматически определяет, в какой кодировке приходит запрос от клиента и отдаёт страничку web-броузеру уже перекодированной. Вот тут нас и поджидает небольшой подводный камень. meta-тег может сыграть плохую шутку. Дело в том, что указания на страничке имеют приоритет по сравнению с командами, присылаемыми web-сервером и, правильно перекодировав страничку, сервер, тем не менее, не может изменить содержимое тега meta. Происходит несовпадение реальной кодировки, в которой пришла страничка, и указаниями в теге meta. Такую страничку нельзя будет нормально просмотреть и перекодировать средствами броузера. Выбор кодировки вручную в данном случае не поможет, т.к. тег meta имеет приоритет и над установками броузера. Единственный способ сделать это - сохранить страничку и удалить злосчастный тег.
В связи со всеми этими проблемами в РУНЕТ-е не рекомендуется применять данный тег вообще. В таком случае просмотр будет осуществляться в той кодировке, на которую настроен броузер, если сервер не пришлёт уведомление о кодировке документа. В случае несовпадения ее можно достаточно легко переключить. Кроме того, если по-умолчанию выставлять кодировку win-1251, то у 95% Ваших посетителей страничка сразу же будет показана правильно.
Проблемы с таблицами стилей
В последнее время в связи с широким распространением dhtml, css и 4-х версий броузеров возникла новая проблема, связанная с кодировками. И причиной её появления служит использование каскадных таблиц стилей (css).
Как известно, css позволяет нам задать конкретный шрифт, который будет использоваться для отображения текста. И, вроде бы, мы можем пользоваться абсолютно любым шрифтом, и от этого захватывает дух. Но проблема заключается в том, что шрифты берутся из набора, установленного на компьютере у посетителя, а вовсе не у Вас. И именно Ваш набор шрифтов совершенно не обязан быть у других. Как правило, его там и нет.
Что же делать? Неужели нельзя пользоваться разными шрифтами? Можно! Но с рядом ограничений и пониманием того факта, что даже при этих ограничениях у некоторых людей Ваша страничка не будет просматриваться.
Каковы же эти ограничения?
Первое, и основное, заключается в том, чтобы использовать только стандартные шрифты, поставляемые с windows и гарантированно находящиеся на машине клиента. А этих шрифтов, как известно, всего три. Вот их список: "arial", "times new roman", "courier".
А второе - корректное описание шрифта в таблице стилей и перечисление в списке также и других заменяющих шрифтов. В конце списка должно быть обязательное указание общего семейства шрифта (с засечками, без засечек, моноширинный и т.д.). При помощи такого описания мы увеличиваем потенциальную аудиторию нашего сайта. Пример корректного описания шрифтов в таблице стилей показан ниже.
Почему же нельзя использовать другие шрифты? Потому что в этом случае недостающий шрифт будет подменён ближайшим подходящим по-умолчанию. Для уменьшения вероятности этого мы и используем в css список заменяющих шрифтов. Но ещё хуже, если шрифт будет на компьютере, но окажется нерусифицированной версией. В этом случае текст будет отображен некими спецсимволами из набора знаков центральной Европы - всевозможные знаки с умляутами, апострофами, тильдами и т.п.
Из всего вышесказанного следует вывод - со шрифтами следует работать осторожно. И до сих пор много чисто текстовых надписей отливается в gif. Ситуация не изменится до тех пор, пока шрифт нельзя будет загружать на клиентскую машину, подобно тому, как это происходит с картинкой. На самом деле такая технология уже есть и реализована, например, в 4-ом internet explorer. Но она ещё слишком сыра и, что самое главное, шрифт должен быть представлен в специальном формате. Будем надеяться, что в будущем это станет стандартом, а пока нужно с осторожностью пользоваться шрифтами, отливая редкие в графику и используя в css только стандартные.
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.