CR và LF
Mã tiêu chuẩn Mỹ để trao đổi thông tin (ASCII) đã xác định các ký tự điều khiển bao gồm CARRIAGE-RETURN (CR) và LINE-FEED (LF) được sử dụng để điều khiển vị trí in trên máy in theo cách tương tự với máy đánh chữ cơ học đi trước máy in máy tính sớm.
Nền tảng phụ thuộc
Trong Windows, trình phân tách dòng truyền thống trong các tệp văn bản là CR, theo sau là LF
Trong các hệ thống Apple Macintosh cũ (trước OSX), bộ tách dòng truyền thống trong các tệp văn bản là CR
Trong Unix và Linux, trình phân tách dòng truyền thống trong các tệp văn bản là LF.
\ n và \ r
Trong nhiều ngôn ngữ lập trình và kịch bản \n
có nghĩa là "dòng mới". Đôi khi (nhưng không phải luôn luôn) điều này có nghĩa là ký tự ASCII LINE-FEED (LF), như bạn nói, di chuyển con trỏ (hoặc vị trí in) xuống một dòng. Trong một máy in hoặc máy đánh chữ, điều này thực sự sẽ di chuyển giấy lên một dòng.
Lúc nào cũng vậy \r
có nghĩa là ký tự ASCII CARRIAGE-RETURN (CR) có tên thực sự xuất phát từ máy đánh chữ cơ học, nơi có một phím quay trở lại vận chuyển khiến cho con lăn ("cỗ xe") mang giấy di chuyển sang bên phải, chạy bằng lò xo, như nó sẽ đi Do đó, thiết lập vị trí gõ hiện tại sang lề trái.
Lập trình
Trong một số ngôn ngữ lập trình \n
có thể có nghĩa là một chuỗi các ký tự phụ thuộc vào nền tảng kết thúc hoặc tách các dòng trong tệp văn bản. Ví dụ: trong Perl, print "\n"
tạo ra một chuỗi các ký tự khác nhau trên Linux so với trên Windows.
Trong Java, thực hành tốt nhất, nếu bạn muốn sử dụng kết thúc dòng bản địa cho nền tảng chạy, không phải là để sử dụng \n
hoặc \r
ở tất cả. Bạn nên sử dụng System.getProperty("line.separator")
. Bạn nên sử dụng \n
và \r
nơi bạn muốn LF và CR bất kể nền tảng (ví dụ như được sử dụng trong HTTP, FTP và các giao thức truyền thông Internet khác).
Unix stty
Trong shell Unix, stty
lệnh có thể được sử dụng để khiến shell dịch giữa các quy ước khác nhau này. Ví dụ, stty -onlcr
sẽ khiến shell sau đó dịch tất cả các LF đi ra CR CR.
Linux và OSX tuân theo các quy ước Unix
Tập tin văn bản
Các tập tin văn bản vẫn rất quan trọng và được sử dụng rộng rãi. Ví dụ, HTML và XML là các ví dụ về tệp văn bản. Hầu hết các giao thức Internet quan trọng, như HTTP, tuân theo các quy ước về tệp văn bản và bao gồm các thông số kỹ thuật cho các kết thúc dòng.
Máy in
Hầu hết các máy in khác với giá rẻ nhất, vẫn tôn trọng CR và LF. Trong thực tế, chúng là nền tảng cho các ngôn ngữ mô tả trang được sử dụng rộng rãi nhất - PCL và Postcript.
\r\n
là ổn trong Windows nhưng\n\r
không, và tôi nhớ điều đó bởi vì đó\r\n
là từ viết tắt của y tá đã đăng ký. Tôi cũng nghe rằng đó\n
là những gì mọi người sử dụng trong Linux và\r
không được sử dụng một mình cho cùng một mục đích như\r\n
.\r
được sử dụng trong MacOS thực sự cũ. Tôi đã không xác minh những sự thật, mặc dù.