Тексты — это самый распространенный тип данных в компьютерном мире. Текстовую форму имеют не только источники, предназначенные для чтения,—дискурсы. Многие компьютерные программы, описания изображений, сценарии работы операционных систем записываются в текстовом виде; и, хотя работать с такими описаниями могут только специалисты или специальные программы — лингвистические процессоры, они имеют все формальные признаки текста: алфавит, синтаксис и семантику.
Можно предположить, что в такой важной области, какой является тестовая форма представления информации, действуют стандарты, имеющие силу физических законов. К сожалению, это предположение ошибочно. Основной причиной «текстовой разноголосицы» является очень большое количество символов, требующихся для поддержки различных языков и сфер человеческой деятельности.
Для кодирования нескольких десятков европейских языков, использующих латинский алфавит, достаточно иметь полторы сотни символов. Каждый язык, базирующийся на собственном национальном алфавите, требует примерно сотни символов. Это славянские языки, греческий, иврит, арабский, санскрит и др. Для китайского, корейского и других языков, основанных на иероглифах, счет идет уже не на сотни, а на тысячи. Если учесть, что во многих областях человеческой деятельности используются специальные символы, например, для записи математических формул или знаки редакторской правки, то количество символов универсального алфавита уверенно приближается к десяти тысячам.
Чем же мы располагаем? В современных персональных компьютерах на один символ отводится восемь двоичных разрядов, т. е. байт. В такой системе кодирования можно записать 256 символов (два в восьмой степени). Исторически ситуация сложилась так, что стандартизованы только 128 символов с номерами (кодами) от 0 до 127. Они называются символами ASCII (American Standard Code for Information Interchange, американский стандартный код обмена информацией) и составляют первую половину кодовой таблицы. В состав ASCII входят важные управляющие символы, прописные и строчные буквы латинского алфавита, цифры, знаки препинания и некоторые спецсимволы.
Вторая половина кодовой таблицы может использоваться для различных целей, например, для кодирования национальных алфавитов или расширенного множества математических символов. Если набор ASCII является общим для большинства компьютерных платформ и операционных систем, то расширенные наборы имеют значительные различия. Существует несколько стандартов, которые определяют содержание всех 256 символов: ANSI, КОИ-8, EBCDIC и др. ANSI — это стандартная кодировка для платформы Windows, КОИ-8 широко используется различными версиями операционной системы Unix, кодировка EBCDIC применяется на машинах класса mainframe.
Самой решительной попыткой преодолеть недостатки систем кодирования, основанных на однобайтовом представлении символов, является сравнительно новый стандарт Unicode (ISO 10646). В этой системе кодирования символы представляются двумя байтами (шестнадцать двоичных разрядов), поэтому диапазон допустимых кодовых значений равен 65536 (два в шестнадцатой степени). Алфавит такой мощности с избытком покрывает все текущие и будущие потребности программистов и компьютерных пользователей.