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


Кодування являє собою таблицю символів, де кожній букві алфавіту (а також цифрам і спеціальним знакам) привласнений свій унікальний номер - код символу.

Стандартизована тільки половина таблиці, т.зв. 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, залишається ще занадто багато часу.