Трохи слів про кодування, Різне, Інтернет-технології, статті

Михайло Мельников,
Web-studio Cherry-Design

Хто про це все знає, той може пропустити цю статтю, іншим же я повідаю про причини виникнення різних кодувань і проблемах 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, відповідний код буде виглядати так:

<meta http-equiv="content-type" content="text/html;
charset=Windows-1251">

Але, на жаль, з цим тегом пов’язано кілька проблем. В Росії дуже поширений спосіб, при якому web-сервер автоматично визначає в якому кодуванні приходить запит від клієнта й віддає сторінку web-броузеру вже перекодованої. Ось тут нас і чекає невеликий підводний камінь. META-тег може зіграти поганий жарт. Справа в тому, що вказівки на сторінці мають пріоритет у порівнянні з командами, надсилаються web-сервером і правильно перекодувавши сторінку, сервер, тим не менш, не може змінити вміст тега META. Відбувається розбіжність реального кодування, в якій прийшла кодування і вказівками в теге META. Таку сторінку можна буде нормально переглянути й перекодувати засобами броузера. Вибір кодування вручну в даному випадку не допоможе, тому що тег META має пріоритет і над установками броузера. Єдиний спосіб зробити це – зберегти сторінку й видалити злощасний тег.

У зв’язку з усіма цими проблемами, в Рунеті-е не рекомендується застосовувати даний тег взагалі. В такому випадку перегляд буде здійснюватися в тій кодуванні, на яку налаштований броузер, якщо сервер не надішле повідомлення про кодування документа. У випадку розбіжності її можна досить легко перемкнути. Крім того, якщо за замовчуванням виставляти кодування Win-1251, то у 95% Ваших відвідувачів сторінка відразу ж буде показана правильно.

Проблеми з таблицями стилів

Останнім часом, у зв’язку з широким розповсюдженням DHTML, CSS і 4-х версій броузерів виникла нова проблема, пов’язана з кодуваннями. І причиною її появи служить використання каскадних таблиць стилів (CSS).

Як відомо, CSS дозволяє нам задати конкретний шрифт, який буде використовуватися для відображення тексту. І начебто б, ми можемо користуватися абсолютно будь-яким шрифтом, і від цього захоплює дух. Але проблема полягає в тому, що шрифти беруться з набору встановленого на комп’ютері у відвідувача, а зовсім не у Вас. І саме Ваш набір шрифтів, зовсім не зобов’язаний бути в інших. Як правило, його там і немає.

Що ж робити? Невже не можна користуватися різними шрифтами? Можна! Але з рядом обмеженням і розумінням того факту, що навіть при цих обмеженнях у деяких людей Ваша сторінка не буде проглядатися.

Які ж ці обмеження?

Перше і основне полягає в тому, щоб використовувати тільки стандартні шрифти, що поставляються з Windows і гарантовано знаходяться на машині клієнта. А цих шрифтів, як відомо всього три. Ось їх список: “Arial”, “Times New Roman”, “Courier”.

А друге – коректний опис шрифту в таблиці стилів і перерахування в списку також і інших замінюють шрифтів. В кінці списку повинно бути обов’язкове зазначення загального сімейства шрифту (із зарубками, без зарубок, моноширинний і т.д.). За допомогою такого опису ми збільшуємо потенційну аудиторію нашого сайту. Приклад, коректного опису шрифтів у таблиці стилів, показаний нижче.

<style type="text/css">
<!–
.serif { font-family : "Times New Roman", "Geneva", "serif"; }
.sanserif { font-family : "Arial", "Helvetica", "sans-serif"; }
.mono { font-family : "Courier", "monospace"; }
–>
</style>

Чому ж не можна використовувати інші шрифти? Тому що в цьому випадку, відсутній шрифт буде підмінений найближчим відповідним за замовчуванням. Для зменшення ймовірності цього, ми і використовуємо в CSS список замінюють шрифтів. Але, ще гірше, якщо шрифт буде на комп’ютері, але виявиться нерусифікованою версією. В цьому випадку текст буде відображений якимись спецсимволами з набору знаків центральної Європи – всілякі знаки з умляутами, апострофами, тильдами і т.п.

З усього вищесказаного випливає висновок – зі шрифтами варто працювати обережно. І, до цих пір, багато чисто текстових написів відливається в GIF. Ситуація не зміниться до тих пір, поки шрифт не можна буде завантажувати на клієнтську машину, подібно тому, як це відбувається з картинкою. Насправді, така технологія вже є й реалізована, наприклад, в 4-м експлорері. Але, вона ще занадто сиру і, що найголовніше, шрифт повинен бути представлений у спеціальному форматі. Будемо сподіватися, що в майбутньому це стане стандартом, а поки потрібно з обережністю користуватися шрифтами, відливаючи рідкі в графіку й використовуючи в CSS тільки стандартні.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*