Про кодування та кодові сторінки
Навряд чи це зараз дуже актуально, але може комусь видасться цікавим (або просто згадає минулі роки).
Почну з невеликого екскурсу до історії комп'ютера. Оскільки комп'ютер використовувався для обробки інформації, він просто зобов'язаний представляти цю інформацію в «людському» вигляді. Комп'ютер зберігає інформацію як чисел (байтів), а людина сприймає символи (літери, цифри, різні знаки). Отже, треба зробити зіставлення число символ і завдання буде вирішено. Спочатку порахуємо скільки символів нам треба (не забудемо, що «ми» — американці, які використовують латинський алфавіт). Нам треба 10 цифр + 26 великих літер англійського алфавіту + 26 малих літер + математичні знаки (хоча б +-/*=> Відмінно, для 128 символів достатньо 7 біт. З іншого боку, в байті 8 біт і канали зв'язку 8-бітні (забудемо про «доісторичні» часи, коли в байті і каналах біт було менше.) По 8-бітному каналу будемо передавати 7 біт коду символу і 1 біт контрольний (для підвищення надійності та розпізнавання помилок). , поки комп'ютери не стали використовуватися в інших країнах (де латиниця містить більше 26 символів або взагалі використовується не латинський алфавіт.) Замість того, щоб усім поголовно освоїти англійську, жителі СРСР, Франції, Німеччини, Грузії та десятків інших країн захотіли, щоб комп'ютер спілкувався з ними рідною мовою Шляхи були різні (залежно від гостроти проблеми): одна справа, якщо до 26 символів латиниці треба додати 2-3 національні символи (можна пожертвувати якимись спеціальними) та інша справа, коли треба «вклинити» кирилицю. Тепер ми — українські, які прагнуть «русифікувати» техніку. Першими були рішення на основі заміни малих англійських букв великими українськими. Однак проблема в тому, що українцілітер (33) і вони не влазять на 26 місць. Треба «ущільнити» і першою жертвою цього ущільнення впала буква Е (її просто повсюдно замінили на Е). Інший прийом – замість «українських» A, E, K, M, H, O, P, C, T стали використовувати схожі англійські (таких букв навіть більше ніж треба, але в деяких парах великі схожі, а малі – не дуже: Hh Tt Bb Kk Mm). Але все ж таки «вклинили» і в результаті весь висновок йшов ПРОПИСНИМИ БУКВАМИ, що незручно і некрасиво, проте згодом звикли. Другий прийом - "перемикання мови". Код українського символу збігався з кодом англійського символу, але пристрій пам'ятав, що він зараз в українському режимі і виводив символ кирилиці (а в англійському режимі – латиниці). Режим перемикався двома службовими символами: Shift Out (SO, код 14) на українську та Shift IN (SI, код 15) на англійську (цікаво, що колись у друкарських машинках використовувалася двокольорова стрічка і SO призводив до фізичного підйому стрічки та в результаті друк йшов червоним, а SI ставив стрічку на місце і друк знову йшов чорним). Текст з великими та маленькими літерами став виглядати цілком пристойно. Всі ці варіанти більш-менш працювали на великих комп'ютерах, але після випуску IBM PC почалося масове поширення персональних комп'ютерів по всьому світу і треба було вирішувати централізовано.
Проте в цілому кодові сторінки дозволили вирішити проблему виведення національних символів (пристрій просто повинен вміти працювати з відповідною кодовою сторінкою), але породили проблему множинності кодувань, коли поштова програма надсилає дані в одному кодуванні, а програма, що приймає, показує їх в іншій. В результаті користувач бачить так звані «кракозябри» (замість «привіт» написано "ПаѰҐв" або "ОПХБЕР"). Потрібні були програми-перекодувальники, що перекладаютьдані з одного кодування до іншого. На жаль, часом листи при проходженні через поштові сервери неодноразово автоматично перекодувалися (або навіть «обрізався» 8-й біт) і потрібно було знайти та виконати весь ланцюжок зворотних перетворень.
Юний читач може запитати - а що завадило відразу використовувати Unicode, навіщо було вигадано ці проблеми з кодовими сторінками? Думаю, справа у фінансовій стороні проблеми. Unicode вимагає вдвічі більше пам'яті, а пам'ять коштує грошей (і дискова та ОЗУ). Чи став би американець купувати комп'ютер на 1-2 тис дорожче через те, що «тепер нова ОС потребує більше пам'яті, але дозволяє без проблем працювати з українською, європейською, арабською мовами»? Боюся, простий англомовний покупець сприйняв би такий аргумент неадекватно (і звернувся б до інших виробників).