Cả hai đều có nghĩa là "dòng mới" nhưng khi nào được sử dụng trên dòng khác?Sự khác nhau giữa n và r n là gì?
Trả lời
\r\n
là một của Windows Phong cách
\n
là một POSIX Phong cách
\r
là một cũ pre-OS X Mac Style, Modern Mac của sử dụng POSIX Style.
\r
là một trở carrige và \n
là một thức ăn đường, trong máy tính cũ nơi nó không có màn hình, chỉ có máy in để thoát khỏi chương trình kết quả cho người sử dụng, nếu bạn muốn có được in từ nhìn chằm chằm mới dòng từ trái, bạn phải có được \n
cho dòng Thức ăn, và \r
cho được Vận chuyển trở lại đến vị trí bên trái nhất, đây là từ các máy tính cú pháp cũ lưu vào thời gian này trên nền tảng Windows.
Lưu ý rằng '\ r' chỉ là" Mac Style "dành cho Mac OS X trước. Mac hiện đại sử dụng phong cách POSIX, vì chúng cuối cùng dựa trên một dẫn xuất BSD. –
@Tyler McHenry: cảm ơn xem xét, cập nhật! ;-) – Svisstack
CR + LF thường được sử dụng trong nhiều giao thức mạng (như HTTP), bất kể hệ điều hành được sử dụng để truyền dữ liệu. '\ r' thường được ánh xạ tới CR bất cứ khi nào hệ thống đích sử dụng ASCII hoặc Unicode làm hệ thống ký tự của nó. (Nếu hệ thống đích sử dụng EBCDIC, thì '\ r' có thể không có ánh xạ.)' \ N' thì phức tạp hơn, vì nó phụ thuộc vào ngữ cảnh. Nó thường được ánh xạ tới một mã ASCII/Unicode LINE FEED, nhưng nó không phải lúc nào cũng đơn giản. Câu trả lời cho câu hỏi "Có thể trùng lặp" có chi tiết. –
'\ n' là mặc định trong Unix, '\ r \ n' là mặc định trong Windows.
\ n chỉ là dòng mới, \ r \ n là dòng mới và dấu ngã dòng (ví dụ: di chuyển con trỏ sang bên trái).
Hệ điều hành khác nhau xử lý dòng mới theo cách khác. Dưới đây là danh sách ngắn các thông dụng phổ biến nhất: DOS và Windows
Chúng mong đợi một dòng mới là kết hợp của hai ký tự, cụ thể là '\ r \ n' (hoặc 13 tiếp theo là 10).
Unix (và do đó Linux cũng vậy)
Unix sử dụng một '\ n' để chỉ một dòng mới.
Mac
Máy Mac sử dụng một đơn '\ r'.
vì vậy điều này gây ra sự cố khi bạn chuyển ứng dụng của bạn từ cửa sổ sang mac khi bạn đang sử dụng đường dẫn thư mục và giống nhau.
Sự khác biệt là giữa các hệ điều hành khác nhau, trên Windows, kí tự xuống dòng là \r\n
trong khi trên Linux nó chỉ là \n
Mac OSX vừa \r
của nó thực sự chỉ là vấn đề của những gì các nhà thiết kế của hệ điều hành đã làm cho nó trở thành
\ n có nghĩa là dòng mới. Nó có nghĩa là con trỏ phải đi đến dòng tiếp theo.
\ r có nghĩa là vận chuyển trở lại. Nó có nghĩa là con trỏ sẽ quay trở lại đầu dòng.
Các chương trình Unix và Unix thường chỉ cần một dòng mới (\ n).
Chương trình Windows và Windows thường cần cả hai.
Đây là cách dòng mới được thể hiện trong hệ điều hành Windows (\ r \ n) và Linux (\ n)
Trên Unix \ r là một vận chuyển trở lại (CR) và \ na Dòng thức ăn (LF) cùng nhau xảy ra để trở thành Windows newline số nhận dạng và bạn đang thay thế chúng bằng một định danh dòng mới Unix.
Trên Windows, \ r cũng là CR, nhưng \ n là kết hợp CR và LF. Vì vậy, hiệu quả bạn đang cố gắng để thay thế CR + CR + LF với CR + LF. Không làm cho nhiều ý nghĩa , làm điều đó.
Từ "perldoc perlop": Tất cả các hệ thống sử dụng "" \ n "" ảo để biểu diễn trình kết thúc dòng, được gọi là "dòng mới". Không có thứ gì như một ký tự dòng mới không thay đổi. Nó chỉ là một ảo tưởng rằng hệ điều hành, trình điều khiển thiết bị, thư viện C và Perl tất cả âm mưu để bảo tồn. Không phải tất cả các hệ thống đều đọc "" \ r "" dưới dạng ASCII CR và "" \ n "" dưới dạng ASCII LF. Ví dụ: trên máy Mac, các máy này được đảo ngược và trên các hệ thống không có đầu cuối dòng, in "" \ n "" có thể phát ra không có dữ liệu thực tế. Nói chung, hãy sử dụng "" \ n "" khi bạn có nghĩa là "dòng mới" cho hệ thống của bạn, nhưng sử dụng ASCII theo nghĩa đen khi bạn cần một ký tự chính xác. Ví dụ: hầu hết các giao thức mạng mong đợi và thích CR + LF ("" \ 015 \ 012 "" hoặc "" \ cM \ cJ "") cho các ký tự dòng, và mặc dù chúng thường chỉ chấp nhận "" \ 012 "" , họ hiếm khi chịu đựng chỉ "" \ 015 "". Nếu bạn có thói quen sử dụng "" \ n "" để kết nối mạng, bạn có thể bị đốt cháy một ngày nào đó.
Trong C#, bạn chỉ có thể sử dụng Environment.NewLine
Trớ trêu thay, mặc dù đây là mức độ ưu tiên sử dụng trên "\ n" hoặc "\ r \ n" (ít nhất là trong DOT NET), nó không thực sự trả lời câu hỏi gốc. – mickeyf
- 1. Sự khác biệt giữa \ r và \ n là gì?
- 2. Sự khác nhau giữa alloca (n) và char x [n] là gì?
- 3. Sự khác nhau giữa char literals '\ n' và '\ r' trong Java là gì?
- 4. Sự khác biệt giữa "\ n" và Environment.NewLine
- 5. PHP chênh lệch giữa \ r \ n \ n
- 6. Sự khác biệt giữa O (n) và O (log (n)) - cái nào tốt hơn và chính xác là O (log (n)) là gì?
- 7. QString :: split() và "\ r", "\ n" và "\ r \ n" quy ước
- 8. Làm cách nào để {n}? và {n} khác nhau?
- 9. Sự khác nhau giữa isSaleable() và isAvailable() là gì?
- 10. mảng numpy là (n, 1) và (n,)
- 11. Là một dòng mới = \ n OR \ r \ n?
- 12. Sự khác nhau giữa vector và đỉnh là gì?
- 13. Sự khác nhau giữa cat_id và term_id là gì?
- 14. LINQ - Sự khác biệt giữa .Select (n => n.Name) và .Select (n => new {n.Name});
- 15. Regex dải \ r \ n hoặc \ r \ n
- 16. Làm thế nào để bạn hình dung sự khác biệt giữa O (log n) và O (n log n)?
- 17. Sự khác nhau giữa app.doScript và $ .evalFile là gì?
- 18. Tại sao thành ngữ đệ quy trong Haskell "'n + 1' và 'n'" và không phải là "'n' và 'n-1'"?
- 19. javascript, thay thế \ n bằng \ r \ n
- 20. Sự khác nhau giữa NULL và ký tự (0) trong R là gì?
- 21. Sự khác nhau giữa sort() và sort.list() trong R là gì?
- 22. Sự khác nhau giữa WPF và WinForms là gì?
- 23. Sự khác nhau giữa JavaScript và Java là gì?
- 24. Sự khác nhau giữa ODBC và OleDB là gì?
- 25. Sự khác nhau giữa SGML và XML là gì?
- 26. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 27. Sự khác nhau giữa RMI và Corba là gì?
- 28. Sự khác nhau giữa scgi và wsgi là gì?
- 29. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 30. Sự khác nhau giữa Pingback và Trackback là gì?
Nếu bạn bỏ lỡ '\ r', việc vận chuyển sẽ không quay trở lại vị trí bắt đầu của nó ;-) – chiccodoro
haha đẹp 7 câu trả lời trong 5 phút .. chỉ với 29 lượt xem, có nghĩa là 1/4 người đã viết câu trả lời :) –
Nhưng điều này chắc chắn nhất là ngôn ngữ không rõ ràng của _not_. '\ r \ n' là các hàm seqeunces thoát chung trong nhiều c và c như các ngôn ngữ, nhưng chắc chắn không phải tất cả các ngôn ngữ. – Oded