В вычислительной технике простой текст — это нестрогий термин для данных (например, содержимого файла), которые представляют собой только символы читаемого материала, но не его графическое представление или другие объекты ( числа с плавающей точкой , изображения и т. д.). Он также может включать ограниченное количество «пробелов», которые влияют на простое расположение текста, например, пробелы, разрывы строк или символы табуляции. Простой текст отличается от форматированного текста , в который включена информация о стиле; от структурированного текста, в котором идентифицированы структурные части документа, такие как абзацы, разделы и т. д.; и от двоичных файлов , в которых некоторые части должны интерпретироваться как двоичные объекты (закодированные целые числа, действительные числа, изображения и т. д.).
Термин иногда используется довольно свободно, для обозначения файлов, содержащих только «читаемый» контент (или просто файлы, в которых нет ничего, что не нравится говорящему). Например, это может исключать любые указания на шрифты или макет (например, разметку, markdown или даже табуляции); символы, такие как фигурные кавычки, неразрывные пробелы, мягкие дефисы, длинные тире и/или лигатуры; или другие вещи.
В принципе, простой текст может быть в любой кодировке , но иногда этот термин подразумевает ASCII . Поскольку кодировки на основе Unicode , такие как UTF-8 и UTF-16, становятся все более распространенными, их использование может сокращаться.
Простой текст также иногда используется только для исключения «двоичных» файлов: тех, в которых по крайней мере некоторые части файла не могут быть правильно интерпретированы с помощью действующей кодировки символов. Например, файл или строка, состоящая из «hello» (в любой кодировке), за которым следуют 4 байта, выражающие двоичное целое число, не являющееся символом, является двоичным файлом. Преобразование простого текстового файла в другую кодировку символов не меняет смысла текста, если используется правильная кодировка символов. Однако преобразование двоичного файла в другой формат может изменить интерпретацию нетекстовых данных.
Согласно стандарту Unicode: [1]
Однако согласно другим определениям файлы, содержащие разметку или другие метаданные , обычно считаются простым текстом, если только разметка также находится в непосредственно читаемой человеком форме (как в HTML, XML и т. д.). Таким образом, такие представления, как SGML, RTF, HTML, XML, wiki-разметка и TeX, а также почти все файлы исходного кода языка программирования, считаются простым текстом. Конкретное содержимое не имеет значения, является ли файл простым текстом. Например, файл SVG может отображать рисунки или даже растровую графику, но все равно является простым текстом.
Использование обычного текста вместо двоичных файлов позволяет файлам выживать гораздо лучше "в дикой природе", отчасти делая их в значительной степени невосприимчивыми к несовместимостям компьютерной архитектуры. Например, можно избежать всех проблем с порядком байтов (с такими кодировками, как UCS-2, а не UTF-8, порядок байтов имеет значение, но единообразно для каждого символа, а не для потенциально неизвестных его подмножеств).
Целью использования простого текста сегодня является в первую очередь независимость от программ, которые требуют своей собственной специальной кодировки или форматирования или формата файла . Файлы простого текста можно открывать, читать и редактировать с помощью вездесущих текстовых редакторов и утилит.
Интерфейс командной строки позволяет людям отдавать команды в виде простого текста и получать ответ, обычно также в виде простого текста.
Многие другие компьютерные программы также способны обрабатывать или создавать простой текст, например, бесчисленное множество программ в DOS , Windows , классической Mac OS , Unix и родственных им системах, а также веб-браузеры (некоторые браузеры, такие как Lynx и Line Mode Browser, создают только простой текст для отображения) и другие программы для чтения электронных текстов .
Файлы с простым текстом почти универсальны в программировании; файл исходного кода, содержащий инструкции на языке программирования , почти всегда является файлом с простым текстом. Простой текст также обычно используется для файлов конфигурации , которые считываются для сохраненных настроек при запуске программы.
В большинстве электронных писем используется обычный текст .
Комментарий , файл « .txt » или запись TXT обычно содержат только простой текст ( без форматирования), предназначенный для чтения человеком.
Лучшим форматом для постоянного хранения знаний является простой текст, а не какой-либо двоичный формат . [2]
До начала 1960-х годов компьютеры в основном использовались для обработки чисел, а не текста, и память была чрезвычайно дорогой. Компьютеры часто выделяли только 6 бит на каждый символ, допуская только 64 символа — назначение кодов для AZ, az и 0-9 оставляло только 2 кода: этого было совершенно недостаточно. Большинство компьютеров предпочли не поддерживать строчные буквы. Таким образом, ранние текстовые проекты, такие как Roberto Busa 's Index Thomisticus , Brown Corpus и другие, должны были прибегать к таким соглашениям, как ввод звездочки перед буквами, которые на самом деле должны были быть заглавными.
Фред Брукс из IBM решительно выступал за переход на 8-битные байты, потому что когда-нибудь люди захотят обрабатывать текст, и победил. Хотя IBM использовала EBCDIC , большая часть текста с тех пор стала кодироваться в ASCII , используя значения от 0 до 31 для (непечатаемых) управляющих символов и значения от 32 до 127 для графических символов, таких как буквы, цифры и знаки препинания. Большинство машин хранили символы в 8 битах, а не в 7, игнорируя оставшийся бит или используя его в качестве контрольной суммы .
Почти повсеместное распространение ASCII было большим подспорьем, но не решало международные и лингвистические проблемы. Знак доллара ("$") не был так полезен в Англии, а символы с ударением, используемые в испанском, французском, немецком, португальском, итальянском и многих других языках, были полностью недоступны в ASCII (не говоря уже о символах, используемых в греческом, русском и большинстве восточных языков). Многие люди, компании и страны определяли дополнительные символы по мере необходимости — часто переназначая управляющие символы или используя значения в диапазоне от 128 до 255. Использование значений выше 128 конфликтует с использованием 8-го бита в качестве контрольной суммы, но использование контрольной суммы постепенно прекратилось.
Эти дополнительные символы кодировались по-разному в разных странах, что делало невозможным декодирование текстов без выяснения правил создателя. Например, браузер мог отображать ¬A вместо `, если он пытался интерпретировать один набор символов как другой. Международная организация по стандартизации ( ISO ) в конечном итоге разработала несколько кодовых страниц в соответствии с ISO 8859 для размещения различных языков. Первая из них ( ISO 8859-1 ) также известна как «Latin-1» и охватывает потребности большинства (не всех) европейских языков, использующих латинские символы (не хватило места, чтобы охватить их все). Затем ISO 2022 предоставил соглашения для «переключения» между различными наборами символов в середине файла. Многие другие организации разработали свои вариации на их основе, и в течение многих лет компьютеры Windows и Macintosh использовали несовместимые вариации.
Ситуация с кодировкой текста становилась все более и более сложной, что привело к усилиям ISO и Консорциума Unicode по разработке единой, унифицированной кодировки символов, которая могла бы охватывать все известные (или, по крайней мере, все известные в настоящее время) языки. После некоторого конфликта [3] эти усилия были объединены. В настоящее время Unicode допускает 1 114 112 кодовых значений и назначает коды, охватывающие почти все современные системы письменности текста, а также многие исторические и для многих нелингвистических символов, таких как печатные дингбаты , математические символы и т. д.
Текст считается простым текстом независимо от его кодировки. Чтобы правильно понять или обработать его, получатель должен знать (или быть в состоянии выяснить), какая кодировка использовалась; однако ему не нужно ничего знать об архитектуре компьютера, которая использовалась, или о двоичных структурах, определенных какой-либо программой (если таковая имеется), создавшей данные.
Возможно, наиболее распространенным способом явного указания конкретной кодировки простого текста является тип MIME . Для электронной почты и HTTP тип MIME по умолчанию — « text/plain » — простой текст без разметки. Другой тип MIME, часто используемый как в электронной почте, так и в HTTP, — « text/html ; charset=UTF-8» — простой текст, представленный с использованием кодировки символов UTF-8 с разметкой HTML. Другой распространенный тип MIME — «application/json» — простой текст, представленный с использованием кодировки символов UTF-8 с разметкой JSON .
Когда документ получен без явного указания кодировки символов, некоторые приложения используют функцию определения кодировки , чтобы попытаться угадать, какая кодировка была использована.
ASCII резервирует первые 32 кода (числа 0–31 в десятичной системе счисления) для управляющих символов, известных как «набор C0»: коды, изначально предназначенные не для представления печатной информации, а для управления устройствами (например, принтерами ), использующими ASCII, или для предоставления метаинформации о потоках данных, например, хранящихся на магнитной ленте. Они включают в себя общие символы, такие как символ новой строки и символ табуляции .
В 8-битных наборах символов, таких как Latin-1 и других наборах ISO 8859 , первые 32 символа «верхней половины» (128–159) также являются управляющими кодами, известными как «набор C1». Они редко используются напрямую; когда они появляются в документах, которые якобы находятся в кодировке ISO 8859, их позиции кодов обычно ссылаются на символы в этой позиции в фирменной, специфичной для системы кодировке, такой как Windows-1252 или Mac OS Roman , которые используют коды вместо предоставления дополнительных графических символов.
Unicode определяет дополнительные управляющие символы, включая символы переопределения направления двунаправленного текста (используемые для явного обозначения написания справа налево внутри написания слева направо и наоборот) и селекторы вариантов для выбора альтернативных форм идеограмм CJK , эмодзи и других символов.