пятница, 8 февраля 2013 г.

электронные книги utf8, windows 1251, koi-8r, ascii

Например, изначально появилась такая кодировка текста как CP866, в которой была возможность использовать символы русского алфавита и эта кодировка являлась расширенной версией кодировки ASCII. Т.е. ее верхняя часть полностью совпадала с базовой версией ASCII (128 символов латиницы, цифр и еще всякой лабуды), которая представлена на приведенном чуть выше скриншоте, а вот уже нижняя часть таблицы с кодировкой CP866 имела указанный на скриншоте чуть ниже вид и позволяла закодировать еще 128 символов (русские буквы и всякая там псевдографика):

Значит, чтобы закодировать любой нужный нам символ (например, национального алфавита) должно быть выполнено два условия — векторная форма этого символа должна быть в используемом шрифте и этот символ можно было бы закодировать в расширенных кодировках ASCII в один байт. Поэтому расширенных кодировок ASCII существует целая куча. Только лишь для кодирования символов русского языка существует несколько вариантов расширенной кодировки ASCII.

Программа, отображающая этот текст на экране (текстовый редактор, браузер и т.п.), при разборе кода считывает кодировку очередного символа и ищет соответствующую ему векторную форму в нужном файле шрифта, который подключен для отображения данного текстового документа. Все просто и банально.

Понятно, что за сами векторные формы символов отвечают шрифты (помните я писал про ), а вот за кодирование отвечает операционная система и используемые в ней программы. Т.е. любой текст на вашем компьютере будет представлять собой набор байтов, в каждом из которых закодирован один единственный символ этого самого текста.

Тут нужно будет еще раз отвлечься, чтобы пояснить — зачем вообще нужны кодировки текстов и почему это так важно. Символы на экране вашего компьютера формируются на основе двух вещей — наборов векторных форм (представлений) всевозможных символов (они находятся в файлах со шрифтами, которые установлены на вашем компьютере) и кода, который позволяет выдернуть из этого набора векторных форм (файла шрифта) именно тот символ, который нужно будет вставить в нужное место.

Итак, мы с вами начали говорить про кодировку текстов под названием ASCII, которая являлась как бы отправной точкой для развития всех современных кодировок (Windows 1251, юникод, UTF 8). Изначально в нее было заложено только 128 символов латинского алфавита, арабских цифр и еще чего-то там, но в расширенной версии кодировки ASCII появилась возможность использовать все 256 значений, которые можно закодировать в одном байте информации. Т.е. появилась возможность добавить в ASCII символы букв своего языка.

Нужны ли кодировки текста, расширенные ASCII кодировки CP866, KOI8-R с псевдографикой

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

Ну так вот, для перевода двоичного числа в шестнадцатеричную кодировку прибегают к следующему простому и наглядному способу. Каждый байт информации разбивают на две части по четыре бита, как показано на приведенном выше скриншоте. Т.о. в каждой половинке байта двоичным кодом можно закодировать только шестнадцать значений (два в четвертой степени), что можно легко представить шестнадцатеричным числом.

Но если вы присмотритесь к таблице с символами кодировки ASCII, то увидите, что эти символы представлены в шестнадцатеричной кодировке. Например, символ «звездочка» соответствует в ASCII шестнадцатеричному числу 2A. Наверное, вам известно, что в шестнадцатеричной системе счисления используются кроме арабских цифр еще и латинские буквы от A (означает десять) до F (означает пятнадцать).

Нетрудно понять, что всех возможных комбинаций нулей и единиц в такой конструкции может быть только 256. Переводить число из двоичной системы в десятичную довольно просто. Нужно просто будет сложить все степени двойки, над которыми стоят единички. В нашем примере это получается 1 (2 в степени ноль) плюс 8 (два в степени 3), плюс 32 (двойка в пятой степени), плюс 64 (в шестой), плюс 128 (в седьмой). Итого получает 233 в десятичной системе счисления. Как видите все очень просто.

Тут, наверное, стоит еще немного сказать про системы счисления, которые используются при описании кодировок. Во-первых, как вы все знаете, компьютер работает только с числами в двоичной системе счисления, а именно с нулями и единицами («булева алгебра», если кто проходил в институте или в школе). Один байт состоит из восьми бит, каждый из которых представляет из себя двойку в степени начиная с нулевой и до двойки в седьмой степени:

Именно эти 128 символов из первоначального вариант ASCII стали стандартом и в любой другой кодировке текста вы их обязательно встретите и стоять они будут именно в таком порядке. Но дело в том, что с помощью одного байта информации можно закодировать не 128, а целых 256 различных значений (двойка в степени восемь равняется 256), поэтому вслед за базовой версией ASCII появился целый ряд расширенных кодировок ASCII, в которых можно было кроме 128 основных символов закодировать еще и символы национальной кодировки (например, русской).

Так же еще в эти 128 символов кодировки ASCII попадали некоторые служебные символы, навроде скобок, решеток, звездочек и т.п. Собственно, вы сами можете увидеть эти самые 128 символов кодировки ASCII:

Но все же отправной точкой для развития современных кодировок текстов стоит считать знаменитую кодировку ASCII (American Standard Code for Information Interchange, которая по русски обычно произносится как «аски»). Это кодировка, которая описывает первые 128 символов из наиболее часто используемых англоязычными пользователями — латинские буквы, арабские цифры и знаки препинания.

Развитие кодировок текстов происходило одновременно с формированием отрасли IT и кодировки за это время успели претерпеть достаточно много изменений. Исторически все начиналось с довольно таки не благозвучной в русском произношении кодировки EBCDIC, которая позволяла кодировать буквы латинского алфавита, арабские цифры и знаки пунктуации с управляющими символами.

ASCII — базовая кодировка текста для латиницы

Кому-то эти знания могут показаться излишними, но знали бы вы, сколько мне приходит вопросов именно касаемо кодировок текста и вылезших кракозябров (не читаемого набора символов). Теперь у меня будет возможность отсылать всех к тексту этой статьи и самостоятельно отыскивать свои косяки. Ну что же, приготовьтесь впитывать информацию и постарайтесь следить за ходом повествования.

Все о создании сайтов, блогов, форумов, интернет-магазинов, их продвижении в поисковых системах и заработке на сайте Кодировка текста и кракозябры — ASCII, юникод и UTF 8, расширенная ASCII (Windows 1251, CP866, KOI8-R), проблемы с кодировкой текстов Рубрика: Здравствуйте уважаемые читатели блога . Сегодня мы поговорим с вами про то, откуда берутся кракозябры на сайте и в программах, какие кодировки текста существуют и какие из них следует использовать. Подробно рассмотрим историю развития кодировок начиная от базовой кодировки ASCII, а так же ее расширенных версий CP866, KOI8-R, Windows 1251 и заканчивая современными кодировками консорциума Юникод UTF 16 и UTF 8.

Кодировка текста и кракозябры — ASCII, юникод и UTF 8, расширенная ASCII (Windows 1251, CP866, KOI8-R), проблемы с кодировкой текстов | KtoNaNovenkogo.ru - создание, продвижение и заработок на сайте

Комментариев нет:

Отправить комментарий