Що таке виндовс 1251. Інструменти для роботи з кодуваннями HTML файлів

Влад Мержевіч

Метатеги використовуються для зберігання інформації призначеною для браузерів і пошукових систем. Наприклад, механізми пошукових систем звертаються до метатегах для отримання опису сайту, ключових слів та інших даних.

Метатеги для пошукових механізмів

Серед розробників сайтів існує думка, що правильно написані метатеги дозволяють піднятися до верхніх рядків пошукових серверів. Насправді це не так, на одних метатегах високо коли піднімешся, а й невдало виконане вміст метатегов може погіршити рейтинг сайту.

Два метатега призначені спеціально для пошукових серверів: description (опис) і keywords (ключові слова). Деякі веб-майстри додавали в розділ keywords ключові слова, які не мають ніякого відношення до теми сайту, але зате користувалися певним успіхом серед відвідувачів пошукачів. Однак, через деякий час, пошукові системи навчилися боротися з таким явищем і перевіряють вміст веб-сторінки на відповідність заявленим ключовим словам.

Деякі принципи, що відносяться до метатегах:

  • не вмикайте ключові слова, які не містяться на ваших сторінках;
  • не повторюйте ключові слова;
  • використовуйте метатеги за їх прямим призначенням;
  • робіть опис і список ключових слів різними для кожної сторінки сайту з урахуванням вмісту.

description

Більшість пошукових серверів відображають вміст поля description (приклад 1) при виведенні результатів пошуку. Якщо цього тега немає на сторінці, то пошуковий движок просто перерахує перші зустрічаються слова на сторінці, які, як правило, виявляються не дуже-то і в тему.

Приклад 1. Використання Description

description

keywords

Цей метатег був призначений для опису ключових слів, що зустрічаються на сторінці (приклад 2). Але в результаті дії людей, які бажають потрапити у верхні строчки пошукових систем будь-якими засобами, тепер дискредитований. Тому багато пошуковики пропускають цей параметр.

Приклад 2. Використання Keywords

keywords

Ключові слова можна перераховувати через пробіл або кому. Пошукові системи самі приведуть запис до вигляду, який вони використовують.

Автозавантаження сторінок

Щоб автоматично завантажувати новий документ через певний проміжок часу використовується інструкція http-equiv = "refresh" (приклад 3).

. Для операційної системи Windows і кирилиці charset зазвичай приймає значення utf-8 або windows-1251 (приклад 4).

Приклад 4. Вибір поточного кодування

Кодування

кирилиця

Якщо вказівка ​​кодування відсутня, браузер намагається сам визначити, який тип символів використовується в документі і вибирає необхідне кодування автоматично. Браузер не завжди може точно розпізнати мову веб-сторінки і в деяких випадках пропонує в'єтнамську кодування замість кирилиці. З цієї причини краще завжди вказувати наведену рядок. Проте, виникають обставини, коли вказівка ​​кодування може принести певну шкоду. Наприклад, веб-сервер автоматично використовує перекодування даних в KOI-8, а браузер, зустрівши параметр charset = windows-1251, переводить текст в кодування Windows. Виходить подвійна зміна символів, прочитати такий текст не просто. На щастя, подібна проблема вже відходить в минуле, в усякому разі, її легко можна виявити і нейтралізувати на рівні сервера.

Як відомо, в рунеті формально діють 6 російських кодувань: однобайтові windows-1251, KOI-8R, IBM866, ISO-8859-5, російська Mac і двухбайтовая UTF-8.

Проблема російських кодувань в Інтернеті зараз вже практично вирішена за рахунок фактичної монополізації Web'а кодуванням windows-1251 від Microsoft, яка є рідною для 80-90% робочих станцій, що працюють під управлінням Windows всіх версій.

Колись лідируюча кодування KOI-8R витіснено на другий план. Ще недавно вона була основною, тому що прийшла разом з Юнекс з рожевих пелюшок інтернету. KOI-8R - дитя технологічного недосконалості, коли російським духом в інтернеті і не пахло (в ній букви розташовані не за алфавітом, а за подібністю вимови з англійськими літерами). Треба було якось передавати 8-бітові російські літери через 7-бітові англомовні поштові сервери та ніхто не гарантував, що екзотична кирилиця дійде до адресата не у вигляді абракадабри. Так і народилася KOI-8R: якщо англійські сервери відсікали старший біт, то російський текст доходив умовно читабельним, правда на ругліше (російські слова англійськими літерами). В електронній пошті це кодування досі вважається стандартом, навіть дядько Біллі досі залишив її за замовчуванням в своєму поштовому клієнті Outlook Express.

У кодуванні IBM866 (вона ж DOS CP-866) web-сторінки писати не стали, так як бабуся DOS зникла з наших комп'ютерів раніше, ніж інтернет дістався до народних мас. Практично всі користувачі дивилися web з вікон, а ось з DOS'а - майже ніхто.

Кодування ISO-8859-5 і російську Mac можна вважати екзотичними, перша ніде і ні ким не використовувалася (мабуть дядечки з ISO висмоктали її з пальця), а маки в нашій країні - це скоріше дивина, ніж реальність.

UTF-8 - порівняно нова двухбайтовая кодування, покликана замінити весь існуючий звіринець старих кодувань. Але щось ніхто не поспішає це робити. І хоча для XML-документів кодування UTF-8 є стандартною за замовчуванням, в і-неті її НЕ знайдеш днем ​​з вогнем (так само як і самих XML-документів :-).

Таким чином, в перехідний період боротьба йшла в основному між кодуванням зберігання web-сторінок KOI-8R, так як практично всі інтернет-сервери працювали під Юнікс, і кодуванням користувачів windows-1251, які дивилися ці сторінки з вікон 95 або 98 калібру. Тому і виникла проблема перекодування web-контенту. Результат цієї боротьби - час від часу споглядання в браузері абракадабри замість російського тексту.

Чехарда з кодуваннями не залишила байдужими наших талановитих і всюдисущих програмістів. Вони взяли популярний web-сервер Apache, який родом теж з Юніксів і написали для нього патчі русифікації, благо Apache є програмою з відкритим вихідним кодом. Вийшов російський Apache, який примусово перекодував російське вміст web-сторінок за певними правилами. Оригінальний Apache в той час ні сном ні духом не чув про різноманіття кодувань кирилиці.

Русский Apache створив ще більше проблем. Це я відчув на своє шкурі. При видачі web-сторінки за запитом браузера Apache.ru перекодовує її з кодування зберігання (koi-8r) в кодування клієнта (наприклад, windows-1251). Припустимо на сервері лежить HTML-код в koi8-r, в заголовку сторінки, як і належить, варто meta-ТЗГ:

При передачі браузеру в Windows відбувається перекодування koi\u003e win. Таким чином, текст сторінки виявився в кодуванні windows-1251, а в заголовку і раніше стоїть той же meta-тег charset і koi8-r буде встановлена ​​браузером, в результаті чого web-сторінка буде нечитабельною. Користувачеві доведеться вручну вибрати потрібне кодування.

Щоб уникнути таких ситуацій з заголовків web-сторінок довелося взагалі викинути meta-тег charset. Але все одно немає гарантії, що кодування клієнта буде визначена коректно, так як кодування браузера за замовчуванням може не збігтися з кодуванням HTML-документа. А якщо web-сторінку помилково опублікувати на сервері в кодуванні windows-1251, то при перекодуванні koi\u003e win російський текст в браузері виявиться в невідомої кодуванні, тобто остаточно зіпсується.

Коротше кажучи, web-майстрам довелося боротися з примусовим перекодуванням в Apache.ru. (Наприклад, за допомогою налаштувань Apache або файла.htaccess).

Зараз ситуація владналося на увазі наступних причин:

  • оригінальний Apache доріс таки до підтримки російських кодувань;
  • web-хостери (вони ж власники юнікс-серверів) здогадалися відключити перекодування в Apache.ru або поставили оригінальний Apache, який нічого не перекодує;
  • web-хостери стали використовувати в якості кодування зберігання windows-1251 (навіть на юнікс-серверах), що дозволило припинити нескінченне і безглузде перекодування web-сторінок при їх передачі браузерам клієнтів, що працюють переважно під Windows.
  • всі сучасні версії браузерів навчилися автоматично визначати кодування HTML-сторінки (meta-тег charset - це найкраще рішення, на 100% гарантує правильне відображення кирилиці)

Як не дивно, парадокс ситуації полягає в тому, що монополія якоїсь однієї кодування (їй виявилася windows-1251) - це благо для всіх, на відміну від бардаку, створюваного кількома конкуруючими кодуваннями.

У цій статті я постараюся поставити всі крапки над «і» (а так само над «i») в питанні вибору кодування для створюваної HTML-сторінки.

Коли я тільки починав займатися сайтостроительства у мене постійно виникали проблеми через ці кодувань. Збережеш HTML-сторінку, вивантажити на сервер, відкриваєш, бах, а там кракозябри. Ну ось і здрастуйте, приїхали.

Або в середовищі налагодження (наприклад, локальна середовище розробки «») все нормально, а з хостингу знову вони, кракозябри прокляті, нахабно на мене дивляться.

З двигунами скільки мук було. Раптом, незрозуміло чому, рідні українські літери перетворюються в ...

Зараз ми з цією справою докладно розберемося і ви будете чітко знати   в яке кодування зберігати HTML-сторінку   і за допомогою яких інструментів.

Для зміцнення нашого взаєморозуміння визначимося з поняттям кодування. Так ось, кодування   - це таблиця відповідності машинних кодів і символів алфавіту. Є якась послідовність машинних символів, яку розумний комп'ютер, відповідно до обраної кодовою таблицею, замінює на зрозумілі нам букви.

У 90-ті роки минулого століття (давнина яка, а я як зараз пам'ятаю календар 1991 року на стіні) існувало 4-е кодування для PC і ще одна, своя власна, для Мака. Іронія долі полягає в тому, що у всіх цих кодуваннях символи латиниці ставилися у відповідність машинним кодам по одному і тому ж алгоритму, а ось з приводу кирилиці кожна з кодувань мала свою власну думку.

Вся ця плутанина і привела до появи кракозябрами. Наприклад, якщо слово « питання», Набране в кодуванні windows-1251, відобразити кодуванням KOI8-R, вийде слово« бНОПНЯ».

Слава Богу, 90-ті роки вже далеко позаду і з п'яти бредокодіровок залишилося всього 2-е нормальних. Але цього цілком достатньо, щоб початківець веб-майстер заблукав в двох соснах. Нічого, не переживайте, зараз я вас виведу з цього лісу!

На даний момент вибір для кодування HTML-документа   стоїть між windows-1251 і utf-8. А тепер увага: utf-8 значно багатшими, могутніше і за нею майбутнє. Так що наші HTML-файли ми будемо зберігати саме в utf-8.

Обґрунтую свої слова;). UTF-8 містить у своїй таблиці відповідності такі знаки, як ↓. А в windws-1251 замість цих символів ось що: > . А ще в utf-8 є знак "євро"; а ще utf-8 дозволяє в одному HTML-файлі поєднувати купу різноманітних специфічних символів, використовуваних в таких мовах як грузинський, іврит, китайська, японська; а ще utf-8   в кодуваннях HTML   - це правило хорошого тону.

Сподіваюся я вас переконав і ви будете використовувати Юнікод (до речі «utf-8» і «Юнікод» - це синоніми або, якщо бути більш точним, utf-8 - це одна з кодувань сімейства Юнікод, яка здобула популярність в середовищі веб-розробників) .

Тепер уважно подивимося на інструменти перекодування файлів, які я рекомендую вам використовувати, шановний читачу.

Інструменти для роботи з кодуваннями HTML файлів

Власне, їх всього три:

  • PSPad. Безкоштовний текстовий редактор, мій улюблений.
  •   . Ще один хороший текстовий редактор і теж безкоштовний.
  • Dreamweaver. Ну з Dreamweaver-му ви з вами знайомі з моїх.

Завантажуємо якийсь HTML-файл в PSPad.   І як же нам зрозуміти, що за кодування у завантаженого піддослідного? Дуже просто в рядку стану (внизу) все чітко написано.


Кодування відкритого HTML-файлу windows-1251


А тепер, створюючи новий HTML-документ, подбаємо про його кодуванні.

Йдемо в меню мого улюбленого PSPad-а. Нас цікавить пункт формат. У ньому-то ми і поставимо галку навпроти кодування utf-8.



А так кодування прийдешнього файлу - windows-1251

Тепер про те як змінити кодування файлу HTML. Так виявляється дуже просто:


Потрібно клікнути по необхідної кодуванні в пункті меню формат   і кодування зміниться. Після цього зберігайте файл, він перекодований, справа зроблена.

Що стосується Notepad ++   все дуже схоже на вищеописану ситуацію. Тільки для роботи з кодуваннями потрібно використовувати пункт меню Кодування.


Вся різниця полягає в тому, що в разі Notepad ++ з'являються, спеціально розроблені для перетворення кодувань, пункти меню Перетворити ... (Зайві на мій погляд, в PSPad все простіше і тому я ним користуюся). Відповідно, саме по ним і потрібно кликати при бажанні поміняти кодування у нашого HTML-файлу.

Крім усього іншого, при збереженні в utf-8 у нас є вибір: без BOM   або з BOM. Нам, як веб-майстрам, потрібно використовувати кодування UTF-8 (без BOM).

Ось що нам відповість Вікіпедія на питання «що таке BOM»

Для визначення формату представлення Юнікоду в текстовому файлі використовується прийом, за яким на початку тексту записується символ U + FEFF (нерозривний пробіл нульової довжини), також іменований міткою порядку байтів (англ. Byte Order Mark, BOM). Цей спосіб дозволяє розрізняти UTF-16LE і UTF-16BE, оскільки символу U + FFFE не існує. Також він іноді застосовується для позначення формату UTF-8, хоча до цього формату і не застосовується поняття порядку байтів.

Якщо прочитати наведений текст 10 разів, почухати потилицю, то стає зрозуміло: для utf-8 BOM нам НЕ потрібен. Крім того, якщо зберегти файл з php-скриптом в кодування utf-8 з BOM, То він не буде працювати, тому що обробник не зрозуміє, що це за дурниці такі написана на початку файлу-скрипта (я маю на увазі той самий нерозривний пробіл нульової довжини).

Так-так, залишилося пильно поглянути на Dreamweaver.

Створюючи новий файл, звертайте увагу на те, в якому кодуванні він буде створений. Для цього у вікні створення нового документа File → New (Ctrl + N)   скористайтеся кнопкою Preferences...


І подивіться, що задано в якості кодування за замовчуванням:


Кодування створюваного HTML-файлу за замовчуванням в Dreamweaver

Перекодувати відкритий HTML-файл в Dreamweaver   можна в діалозі Page Properties,який запускається з меню ModifyPage Properties (Ctrl + J).


Вибирайте потрібне значення, натискайте ОК   і все, завдання по перекодированию виконана (а ось BOM все так же непотрібний, не ставте галку).

Визначення кодування браузерами

Отже, наш HTML-файл збережений в обрану нами кодування. Тепер давайте розберемося з питанням: яким чином браузер дізнається про застосовуваної в даному HTML-файлі кодуванні?

Тут є три варіанти:

1. Ми самі повідомляємо браузеру про те, яка кодування встановлена ​​для даного HTML файлу.   Робиться це за допомогою META-тега

У наведеному прикладі браузеру дається вказівка, що завантажений HTML-файл збережений в кодуванні utf-8.

Якщо HTML-файл збережений в кодування windows-1251, то:

До речі, при перекодуванні файлів не забувайте змінювати директиви в META-тегу на актуальні. Dreamweaver, при зміні кодування, робить це автоматично, а в інших текстових редакторах вам потрібно самим ставити у відповідність застосовану кодування і директиву META-тега.

Повний HTML виглядає наступним чином (привожу його для розуміння питання «в якому місці вказується META-тег до директиви кодування» увагу на 4-й рядок):

Untitled Document   Ну і т.д.

2. За допомогою файла.htaccess.Іноді сервер насильно передає заголовки для завантажуваних HTML-файлів і повідомляє браузеру кодування за замовчуванням. В цьому випадку браузер не звертає уваги на директиви в META-тегу, а відображає HTML-файл в тій кодування, яку повідомив сервер. Щоб файл загружалсяв тому кодуванні, яка потрібна вам (часто хостинг насильно вказує кодування windows-1251), в корені хостинг-директорії створюється файл з ім'ям «.htaccess».

Файл цей призначений для додаткової конфігурації сервера. Действіе.htaccess-директив поширюється на всі файли і підкаталоги, які знаходяться в тому каталозі, куди ви зберегли файл.htaccess.

Створити цей файл можна, наприклад, в Total Commander-е, натиснувши гаряче поєднання клавіш Shift + F4   і вказавши ім'я створюваному файлу .htaccess. Далі в текстовому редакторі вказуються директиви додаткових налаштувань кодування за замовчуванням.

Для HTML-файлів в кодуванні utf-8   в.htaccess потрібно написати один рядок:

AddDefaultCharset UTF-8

Для HTML-файлів в кодуванні Windows-1251:

AddDefaultCharset Windows-1251

Якщо ваш хостинг хитро-мудрий і не звертає уваги на ці директиви, то можна спробувати:

Charsetdisable on AddDefaultCharset Off

Якщо і це не дало результату, то просто запитайте у свого хостера, чого вам робити, щоб відключити кодування за замовчуванням :). Все це залежить від конкретних параметрів сервера у хостинг-провайдера.

3. PHP-інструкція, яка вказує кодування за замовчуванням.   У файлі, який потрібно відобразити в бажаному кодуванні, не дивлячись на настройки сервера хостинг-провайдера, на самому початку вказується директива з php-кодом:

Цей php-код відправить заголовок сервера із зазначенням кодування за замовчуванням для браузера. У наведеному прикладі, для відображення сторінки, буде застосовуватися кодування utf-8.

Проти такого брухту, зазвичай, прийомів в настройках сервера хостинг-провайдера не залишається.

Хочу зауважити, що для обробки php-інструкцій сервером, html-файл повинен мати розширення .php(Наприклад index.php).

Є ще питання по кодувань? Пишіть в коментарі. Потрібно вирішити ці проблеми раз і на завжди 🙂