Небагато слів про кодування

Михайло Мельников,
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>

*

*