Правильное отображение веб-страниц в кодировке любого языка
Кодировки
За последние несколько лет стандартной кодировкой русских символов становится Win-1251. Но многие пользователи до сих пор предпочитают использовать альтернативы – КОИ-8, DOS, cp866 и др. Поэтому возникает проблема работы с ними. Также существует огромное количество веб-сайтов, на которых текст представлен, например, в КОИ-8.
Кодовая страница
Текстовая информация кодируется компьютером в последовательность символов из 8 бит (1 байт). Соответственно, 1 байт – 1 символ. Получается, что для записи одного символа (например, собачки @) используется последовательность из восьми нулей и единиц. Для того чтобы программа могла понять и правильно отобразить символы, была придумана таблица символов, в которой показано, какой символ соответствует какой последовательности. Таблицу символов также иногда называют кодовой страницей.
Она может храниться как в самой программе, работающей с текстом, так и быть встроенной в операционную систему. Во втором случае она автоматически представляется при каждом запросе программы. Итак, получив последовательность из 8 нулей и единиц, приложение сверяется с таблицей символов, чтобы определить, какому символу она соответствует.
Ясно, что таблица символов должна быть неким стандартом. Иначе текст просто будет нельзя прочитать. Для латиницы это так и есть. Во всех существующих таблицах символов каждая латинская буква кодируется одной последовательностью бит, строго определенной международным стандартом.
С помощью восьми бит можно закодировать до 256 символов. Действительно, каждый бит – это 0 или 1. Восьмибитных последовательностей может быть 28. 28x8=256. В английском алфавите 26 букв. В таблице символов есть как заглавные, так и строчные буквы. Поэтому под буквы отводится 52 значения. Далее, служебные символы, цифры занимают около 50 мест. В итоге под латиницу отводится 128 мест. Остаются еще 128 – специально для локализации. Например, под русский алфавит.
Коды первых 128 символов кодовых страниц получили название ASCII. По международным стандартам они должны присутствовать во всех кодовых страницах. Дело в том, что они могут кодироваться также семью битами. Первые 32 кода – управляющие символы (например, Backspace). Остальными кодировались латинские буквы (как прописные, так и заглавные), а также цифры, знаки препинания и математические операции. Коды второй половины (после 127) стали называться "расширенным" стандартом ASCII. Следовательно, ими кодировались локальные алфавиты, а также специальные символы других языков.
Тем самым была создана возможность локализации любых программ. Итак, новые таблицы символов различались только второй половиной. А в латинской кодовой странице после 127 места были подставлены гласные с надстрочными символами, используемые в некоторых языках Европы, а также символы псевдографики. В региональных таблицах они отсутствовали – там располагались символы алфавитов, отличных от латиницы. Например, русский.