X000d что за символ

Перевод строки

Перевод строки, или разрыв строки — продолжение печати текста с новой строки, то есть с левого края на строку ниже, или уже на следующей странице.

Разделителем строк, обозначающим место перевода строки, в текстовых данных служит один или пара управляющих символов, а в размеченном тексте также — определённый тег (в HTML — тег
, от англ. break — «разрыв»). Разделитель строк также называют просто переводом строки, когда нет надобности их различать.

Вместе с другими действиями перевод строки выполняется также перед следующим абзацем или страницей.

Содержание

Терминология

Таким образом, вывод последовательности CR+LF в семантике терминала гарантирует действие «создание новой строки».

Терминалы (и их эмуляторы) могут также проводить различные преобразования символов (например, LFCR+LF, CRCR+LF) при вводе и выводе текста.

Жёсткий возврат, иногда аппаратный возврат — разделитель строк, поставленный пользователем.

Мягкий возврат — перевод строки, выполненный текстовым процессором в том месте текста, которое им выбрано. Мягкий возврат является разделителем строк для текстового процессора и не является таковым для пользователя.

В ASCII

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF; см. ниже историческую причину для соглашения CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

В Юникоде

По стандарту, любое совместимое с Юникодом приложение должно воспринимать как перевод строки каждый из нижеследующих символов:

Трудности

Нет общепринятых сокращений русских терминов. ВК (Возврат Каретки) совпадает по написанию с сокращением от англ. BreaK («разрыв [строки]», — то же, что перевод строки), а ПС не различает Подачу Строки и Перевод Строки.

Разница представлений

Перевод строки при вводе с клавиатуры представлен единообразно во всех системах — символом CR, и в системах с другим представлением перевода строки текстовые данные приходится перекодировать.

Последняя строка

История

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

На механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили, откуда традиция представления перевода строки как CR+LF перешла и к текстовым файлам.

Конец строки

Телетайпы сначала печатали на рулонной бумаге, и сообщения начинали и заканчивали переводом строки, чтобы каждое начиналось с новой строки наверняка. Отсюда пошёл обычай включать разделитель сообщений в состав самого сообщения.

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

Забота о разделении сообщений легла на терминал, и думать об этом перестали, а перевод строки в конце текста переосмыслился как конец последней строки, вместе с чем как концы строк переосмыслились и вообще все переводы строк, чему способствовало удобство работы с регулярно завершёнными строками с точки зрения программирования, сродни нуль-терминированным строкам. Так обычай включать разделитель сообщений в состав сообщения перешёл в обычай включать разделитель строк в состав строки.

Лишняя строка в конце файла обычно не представляет хлопот, поэтому перевод строки до сих пор называют концом строки, а разделитель строк — символом конца строки (EOL, англ. end of line ).

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

Абзац

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

Позже в редакторах появился автоматический перенос, выполняемый на лету при отрисовке текста каждый раз заново. Для отличения от ручного его назвали мягким возвратом, а ручной — жёстким (перенос называли и просто возвратом, см. раздел Разница представлений). Разделитель строк при этом переносил как раньше, но приобрёл смысл ещё и разделителя абзацев — для тех строк, в которых срабатывал автоперенос и которые становились при этом абзацами. Включатель такого режима назвали переносом по словам (англ. word wrap ). При автопереносе ручной перенос разрывал абзац, межабзацный интервал делался как раньше (в новых терминах — перемежением пустым абзацем), но основное качество абзаца — независимость от разбиения на строки — было достигнуто.

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

Чтобы не заботиться о совместимости с уже существующим в ASCII разделителем строк/абзацев, разработчики не стали использовать символы ASCII для разделителя строк и разделителя абзацев. В HTML использовали теги
и

, в Юникоде — символы U+2028 и U+2029, соответственно. В Википедии абзацы можно разделять пустыми строками, отображаемыми при этом полноценным интервалом.

Источник

Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки

Notepad в windows 10 начал понимать юниксовый перевод строки, а не только формат Windows.

С проблемой «каши» вместо удобочитаемого текста десятилетиями сталкивались те, кто пытался открыть в среде Windows текстовые документы, подготовленные на других операционных системах. Теперь же всё в одночасье изменяется. И это изменение столь же мало, сколь и эпично по своим практическим результатам и идеологическим последствиям. Microsoft вновь пытается играть в кросс-интеграцию и поддержку открытых стандартов.

Долгие годы Windows Блокнот мог нормально отображать только те текстовые документы, которые содержали символы начала новой строки в формате Windows End of Line (EOL) — «возврат каретки» (CR) и «подача на строку» (LF). На деле это приводило к тому, что Notepad не смог правильно отобразить содержимое текстовых файлов, созданных в Unix, Linux и macOS, где в качестве признака конца строки использовался только символ LF.

X000d что за символ. image loader. X000d что за символ фото. X000d что за символ-image loader. картинка X000d что за символ. картинка image loader

X000d что за символ. image loader. X000d что за символ фото. X000d что за символ-image loader. картинка X000d что за символ. картинка image loader
Обратите внимание, что строка состояния указывает обнаруженный формат EOL текущего открытого файла.

Так же для гибкого управления новой возможностью в разделе реестра [HKEY_CURRENT_USER\Software\Microsoft\Notepad] вводятся два дополнительных ключа:

X000d что за символ. image loader. X000d что за символ фото. X000d что за символ-image loader. картинка X000d что за символ. картинка image loader

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

Что мы можем узнать о проблеме из Википедии

Исторически на механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили, откуда традиция представления перевода строки как CR+LF перешла и к текстовым файлам.

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

Но как известно, стандарты стандартами, а реализации у всех часто выходят разными. И масла в огонь подливает необходимость корректно отображать унаследованные документы, созданные до эпохи юникода. Отсутствие единого общепринятого представления перевода строки в разных операционных системах надолго осложнило обмен текстовыми данными между ними.

Юникод старается примирить эту разницу, уравнивая CR, LF и CR+LF, однако вступает в противоречие с наследуемым им ASCII при трактовке последовательности LF+CR, не предварённой CR: согласно ASCII это один перевод строки, а согласно Юникоду — два.

Источник

Разница между типами разрывов строк CR LF, LF и CR?

Я хотел бы знать разницу (с примерами, если это возможно) между типами разрывов строк CR LF (Windows), LF (Unix) и CR (Macintosh).

Это действительно о том, какие байты хранятся в файле. CR это байт-код для возврата каретки (со времен пишущих машинок) и LF аналогично для перевода строки. Это просто относится к байтам, которые размещены как маркеры конца строки.

Они используются, чтобы отметить разрыв строки в текстовом файле. Как вы указали, Windows использует два символа последовательности CR LF; Unix использует только LF, а старый MacOS (до Mac OS Mac OS X) использовал CR.

Апокрифическая историческая перспектива:

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

Это хорошее резюме, которое я нашел:

Поскольку ответа на этот вопрос нет, кратко резюмируем:

Возврат каретки (MAC pre-OSX)

Перевод строки (Linux, MAC OSX)

Возврат каретки и перевод строки (Windows)

Если вы видите ASCII-код в странном формате, это просто числа 13 и 10 с другим основанием / основанием, обычно основание 8 (восьмеричное) или основание 16 (шестнадцатеричное).

У Джеффа Этвуда есть недавняя запись в блоге об этом: Великий Раскол Newline

Последовательность CR + LF широко использовалась во многих ранних компьютерных системах, в которых в качестве консольного устройства использовались машины телетайпа, как правило, ASR33, поскольку эта последовательность требовалась для позиционирования этих принтеров в начале новой строки. В этих системах текст часто составлялся для совместимости с этими принтерами, поскольку концепция драйверов устройств, скрывающих такие аппаратные детали от приложения, еще не была хорошо разработана; приложения должны были напрямую общаться с телетайпом и следовать его соглашениям.Разделение двух функций скрывало тот факт, что печатающая головка не могла вернуться из крайнего правого края в начало следующей строки за один символ. Вот почему последовательность всегда отправлялась сначала с CR. Фактически часто приходилось отправлять дополнительные символы (лишние CR или NUL, которые игнорируются), чтобы дать время печатающей головке переместиться к левому полю. Даже после того, как телетипы были заменены компьютерными терминалами с более высокой скоростью передачи данных, многие операционные системы все еще поддерживали автоматическую отправку этих символов заполнения для совместимости с более дешевыми терминалами, которым для прокрутки дисплея требовалось несколько раз.

Теоретически CR возвращает курсор в первую позицию (слева). LF подает одну строку, перемещая курсор на одну строку вниз. Вот как в старые времена вы управляли принтерами и мониторами в текстовом режиме. Эти символы обычно используются для обозначения конца строк в текстовых файлах. Различные операционные системы использовали разные соглашения. Как вы указали, в Windows используется комбинация CR / LF, в то время как в пред-OSX Mac используется только CR и так далее.

Системы, основанные на ASCII или совместимом наборе символов, используют либо LF (перевод строки, 0x0A, 10 в десятичном виде) или CR (возврат каретки, 0x0D, 13 в десятичном виде) по отдельности, либо CR, за которым следует LF (CR + LF, 0x0D 0x0A); Эти символы основаны на командах принтера: перевод строки указывает, что из принтера должна выводиться одна строка бумаги, а возврат каретки указывает, что каретка принтера должна вернуться в начало текущей строки.

Печальное состояние «разделителей записей» или «разделителей строк» ​​является наследием мрачных эпох компьютеров.

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

Но однажды это было не совсем так. В приложения встроены управляющие символы и обработка для конкретного устройства. Системы с мертвым мозгом, которые требовали как CR, так и LF, просто не имели абстракции для разделителей записей или ограничителей строки. CR был необходим для того, чтобы телетайп или видеодисплей вернулись в первый столбец, а LF (сегодня, NL, тот же код) был необходим, чтобы заставить его перейти к следующей строке. Я предполагаю, что идея сделать что-то кроме сброса необработанных данных на устройство была слишком сложной.

Unix и Mac фактически указали абстракцию для конца строки, представьте это. К сожалению, они указали разные. (Unix, гм, пришел первым.) И, естественно, они использовали управляющий код, который уже был «близок» к SOP

Поскольку почти все наше операционное программное обеспечение сегодня является потомком операционной системы Unix, Mac или MS, мы застряли в неразберихе с окончанием строки.

Источник

Почему важно всегда ставить символ переноса строки в конце текстовых файлов?

Иногда при просмотре диффов коммитов через git log или git diff можно заметить следующий вывод:

Или на GitHub в интерфейсе для просмотра диффов:

X000d что за символ. github no newline at end of file. X000d что за символ фото. X000d что за символ-github no newline at end of file. картинка X000d что за символ. картинка github no newline at end of file

Почему это так важно, что Git и GitHub предупреждают нас об этом? Давайте разберемся.

Что такое символ переноса строки?

Что может быть проще, чем текстовый файл? Просто текстовые данные — как хранятся на диске, так и отображаются. На самом деле правительство нам врёт всё немного сложнее.

Оффтопик про управляющие символы ASCII

Не все символы, которые содержатся в текстовых файлах, имеют визуальное представление. Такие символы ещё называют «управляющими», и к ним относятся, например:

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

Сегодня многие из этих символов потеряли смысл, но некоторые до сих пор выполняют функцию, схожую с исходной.

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

Для набора символа переноса строки достаточно нажать клавишу «Enter», но на разных платформах этот символ закодируется по-разному:

Как видите, Windows точнее всего эмулирует поведение печатной машинки.

Почему перенос строки в конце файла важен?

Согласно определению из стандарта POSIX, который тоже пришёл к нам из эпохи печатных машинок:

Строка — это последовательность из нуля или более символов, не являющихся символом новой строки, и терминирующего символа новой строки.

Почему важен этот стандарт? Возможен миллиард способов реализовать одно и то же, и только благодаря стандартам, таким как POSIX, мы имеем сейчас огромное количество качественного ПО, которое не конфликтует друг с другом.

Т.е. если вы не ставите символ переноса строки в конце строки, то формально по стандарту такая строка не является валидной. Множество утилит из Unix, которыми я пользуюсь каждый день, написано в согласии с этим стандартом, и они просто не могут правильно обрабатывать такие «сломанные» строки.

Давайте, например, через Python создадим такой файл со сломанными строками:

Упс! wc нашла только 2 строки!

Давайте создадим еще один файл:

И попробуем теперь склеить два созданных файла при помощи утилиты cat :

Название cat — это сокращение от «конкатенация», и никак не связано с котиками. А жаль.

И опять какой-то странный результат! В большинстве случаев это не то, чего вы бы ожидали, но вполне возможны ситуации, когда вам нужен именно такой результат. Именно поэтому утилита cat не может самостоятельно вставлять отсутствующие символы переноса строки, иначе это сделало бы её поведение неконсистентным.

Ещё доводы:

Настраиваем редактор

Самый простой способ перестать думать о пустых строках и начать жить — это настроить свой текстовый редактор или IDE на автоматическое добавление символа переноса строки в конец файлов:

Для других редакторов смотрите настройку здесь.

Заключение

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

В текстовом редакторе это выглядит как лишняя пустая строка в конце файла:

Источник

Коды ASCII символов

Управляющие символы (большинство непечатные; наиболее важные подсвечены жёлтым)

Печатные символы (стандартные)

СимволDecHexOctОписание
3220040Пробел
!3321041Восклицательный знак
«3422042Кавычка (» в HTML)
#3523043Решётка (знак числа)
$3624044Доллар
%3725045Проценты
&3826046Амперсанд
3927047Закрывающая одиночная кавычка (апостроф)
(4028050Открывающая скобка
)4129051Закрывающая скобка
*422a052Звёздочка, умножение
+432b053Плюс
,442c054Запятая
452d055Дефис, минус
.462e056Точка
/472f057Наклонная черта (слеш, деление)
04830060Ноль
14931061Один
25032062Два
35133063Три
45234064Четыре
55335065Пять
65436066Шесть
75537067Семь
85638070Восемь
95739071Девять
:583a072Двоеточие
;593b073Точка с запятой
623e076Знак больше
?633f077Знак вопроса
@6440100эт, собака
A6541101Заглавная A
B6642102Заглавная B
C6743103Заглавная C
D6844104Заглавная D
E6945105Заглавная E
F7046106Заглавная F
G7147107Заглавная G
H7248110Заглавная H
I7349111Заглавная I
J744a112Заглавная J
K754b113Заглавная K
L764c114Заглавная L
M774d115Заглавная M
N784e116Заглавная N
O794f117Заглавная O
P8050120Заглавная P
Q8151121Заглавная Q
R8252122Заглавная R
S8353123Заглавная S
T8454124Заглавная T
U8555125Заглавная U
V8656126Заглавная V
W8757127Заглавная W
X8858130Заглавная X
Y8959131Заглавная Y
Z905a132Заглавная Z
[915b133Открывающая квадратная скобка
\925c134Обратная наклонная черта (обратный слеш)
]935d135Закрывающая квадратная скобка
^945e136Циркумфлекс, возведение в степень, знак вставки
_955f137Нижнее подчёркивание
`9660140Открывающая одиночная кавычка, гравис, знак ударения
a9761141Строчная a
b9862142Строчная b
c9963143Строчная c
d10064144Строчная d
e10165145Строчная e
f10266146Строчная f
g10367147Строчная g
h10468150Строчная h
i10569151Строчная i
j1066a152Строчная j
k1076b153Строчная k
l1086c154Строчная l
m1096d155Строчная m
n1106e156Строчная n
o1116f157Строчная o
p11270160Строчная p
q11371161Строчная q
r11472162Строчная r
s11573163Строчная s
t11674164Строчная t
u11775165Строчная u
v11876166Строчная v
w11977167Строчная w
x12078170Строчная x
y12179171Строчная y
z1227a172Строчная z
<1237b173Открывающая фигурная скобка
|1247c174Вертикальная черта
>1257d175Закрывающая фигурная скобка
1267e176Тильда (приблизительно)

Расширенный набор символов (ANSI) в русской кодировке Win-1251

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *