Emacs для начинающих


Launch x431 master цена на сайте www.obd-2.ru. | сокровища фараона |

Encoding. - часть 2


/p>

     Что собой представляет CCS

?

    Фактически, CCS можно рассматривать как базу данных, в которой хранятся a)символы, b)коды

и c)схема соответствия

символов и кодов (CES - character encoding scheme) например в виде обычной таблицы - map (charmap). Тогда допустимы операции :

CES('A')=61 CES(61)='A'

    Фактически это будет обозначать операции выборки из "базы" :

SELECT CODE FROM CCS WHERE CHAR='A' SELECT CHAR FROM CCS WHERE CODE=61

    Естественно, CCS-ов существует огромное множество : ASCII, KOI8-R, ISO_8859-1 или даже UNICODE. И конечно же каждому CCS соответствует его специфицеская CES.

    Как работает CCS ?

    Очень просто. Пусть у нас есть поток символов ("абстрактных") : "ABBACABCC". Тогда применение CCS к этому потоку (тексту) "ABBACABCC" будет равно применению его CES

к каждому символу в потоке :

CES('A') CES('B') CES('B') CES('A')...

и мы получим поток чисел (кодов) : 61 62 62 61 63 61 62 63 63.

Аналогично, применение CCS к потоку кодов даст поток "абстрактных символов".

    Отсюда следует один очень простой вывод : при хранении текста (потока символов) мы должны

также хранить CCS ! А вот где его хранить - это вопрос. Можно в том же потоке ( "In-band" или "MARK-UP" способ). Можно где-то снаружи потока ("Out-band" способ). Можно хранить лишь имя (ссылку на) CCS.

    К сожалению, в стандартном POSIX

(например на stdin/stdout) мы имеем только

потоки кодов. А вся информация о CCS

потеряна. Подробнее про это можно прочитать в  о локализации POSIX.




Содержание  Назад  Вперед