Мне было интересно, почему, если вы откроете текстовый файл, созданный в блокноте Windows под Unix, вы обнаружите, что он ^M
там, где должна быть новая строка?
Насколько я понимаю, в Windows каждая строка заканчивается \r\n
, то есть 0x0D0A
в ASCII, в то время как ^M
имеет значение ASCII 0x5E4D
. Я не могу связать эти два от одного до другого.
Ответы:
Вы правы насчет важности концов строки; обе операционные системы ожидают, что строка оканчивается на «\ n», но Windows также добавляет «\ r» до того, что Unix не ожидает, поэтому программы Unix будут выводить «\ r» по-своему.
Файл на самом деле не заканчивается двумя символами «^» и «M», это просто обычный способ представления непечатаемых символов. Программы выведут «^» и букву, соответствующую значению байта, начиная с «А» для 1. «М» - это 13-я буква, а «\ г» - это код ASCII 13 (или 0xD, как вы сказали), поэтому вы видите «^ M»
источник
dos2unix
иunix2dos
конвертировать текстовые файлы между форматами.^J
для\n
?