На початку 90-х, коли стався розвал СРСР і кордони Росії були відкриті, до нас почали надходити програмні продукти західного виробництва. Природно, всі вони були англомовними. В цей же час починає розвиватися Інтернет. Гостро постала проблема русифікації ресурсів і програм. Тоді і була придумана російська кодування Windows 1251. Вона дозволяє коректно відображати літери слов'янських алфавітів:
- руського
- українського;
- білоруського;
- сербського;
- болгарського;
- македонського.
Розробка велася російською представництвом Microsoft спільно з компаніями "Діалог" і "Параграф". За основу були взяті самописние розробки, які в 1990-91гг мали ходіння серед нечисленних ідеологів ІТ в Росії.
На сьогоднішній день розроблено більш універсальний спосіб кодувати символи - UTF-8 (Юнікод). У ньому представлено майже 90% всіх програмних і веб-ресурсів. Windows-1251 застосовується в 1,6% випадків. (Інформація з досліджень Web Technology Surveys)
Кодування сайту utf 8 або Windows-1251?
Щоб відповісти на це питання, необхідно трохи зрозуміти, що таке кодування і чим вони відрізняються. Текстова інформація, як втім, і будь-яка інша, в комп'ютері зберігається в закодованому вигляді. Нам легше уявити її як числа. Кожен символ може займати один або більше байт. Windows-1251 є однобайтном кодуванням, а UTF-8 восьмибайтових. Це означає, що в Windows-1251 можна закодувати всього 256 символів.
Так як все зводиться до двійковій системі числення, а байт - це 8 біт (0 і 1), то і максимальне число поєднань становить 28 = 256. Юнікод дозволяє представляти куди більше число символів, та й на кожен може бути виділений більший розмір.
Звідси і випливають переваги Юникода:
- У шапці сайту слід вказати кодування, яка використовується. Інакше замість символів відобразяться "кракозябли". А Юнікод є стандартним для всіх браузерів - вони ловлять його "на льоту" як встановлений за замовчуванням.
- Символи сайту залишаться одними і тими ж, незалежно від того, в якій країні завантажується ресурс. Це залежить не від географічного розташування серверів, а від мови програмного забезпечення робочих станцій клієнта. Житель Португалії, очевидно, використовує клавіатуру і все ПО, включаючи операційну систему, на рідній мові. У його комп'ютері, швидше за все взагалі відсутній Windows 1251. А якщо це так, то і сайти російською мовою коректно відкриватися не будуть. Юнікод, в свою чергу, "зашитий" в будь-яку ОС на будь-якій мові.
- UTF-8 дозволяє закодувати більшу кількість символів. На даний момент використовується 6 байт з 8-ми, а російські символи кодуються двома байтами.
Саме тому краще використовувати універсальну кодування, а не вузькоспеціалізовану, яка застосовується тільки в слов'янських країнах.
Таблиця кодування Windows-1251
Для програмістів і розробників сайтів буває необхідно знати номери символів. Для цього використовуються спеціальні таблиці кодування. Нижче представлена таблиця для Windows-1251.
Що робити, якщо злетіла кодування командного рядка?
Іноді Ви можете зіткнутися з ситуацією, коли в командному рядку замість російських відображаються незрозумілі символи. Це означає, що виникла проблема кодування командного рядка Windows 7. Чому 7-ка? Тому що, починаючи з 8-ї версії, використовується UTF-8, а в сімці ще Windows-1251.
Одноразово допомогти вирішити проблему може команда chcp 866. Поточний сеанс буде працювати коректно. А ось щоб виправити помилку кардинально, знадобиться реєстр.
- Натисніть Win + R і наберіть команду regedit. Це дозволить потрапити в редактор реєстру.
- Перейдіть по гілці HKEY_CURRENT_USER \ Console і подивіться, чому дорівнює значення для CodePage. Швидше за все, ви побачите щось, відмінне від 866 (правильний варіант).
- Виправте на 866 в положенні "Десяткова".
- Закрийте і відкрийте знову командний рядок. Ситуація повинна виправитися.
Відмінного Вам дня!