当前位置:首页 > 默认分类 > 正文内容

\r \n \r\n三者作为换行符的区别?

virtualman9个月前 (04-27)默认分类1004

在计算机领域,\r\n\r\n 是表示文本行结束的转义字符,主要区别如下:

1. \r(回车符,Carriage Return)

  • ASCII码13(十进制)/ 0x0D(十六进制)
  • 作用:将光标移到当前行的开头(不换行)。
    起源于早期打字机,按下“回车”键会让打字机头回到行首,但不会自动进入下一行。
  • 使用场景
    • 传统 Mac OS 9及更早系统\r 作为行结束符。
    • 现代场景中较少单独使用,常见于特定协议(如 FTP 的文本模式)或复古场景(如模拟终端)。
    • 示例:字符串 "abc\rdef" 显示为 def\r 让光标回到行首,覆盖了前面的 abc)。

2. \n(换行符,Line Feed)

  • ASCII码10(十进制)/ 0x0A(十六进制)
  • 作用:将光标移到下一行的同一位置(不回到行首)。
    早期 Unix 系统引入,简化为仅用 \n 表示行结束。
  • 使用场景
    • Unix/Linux/macOS(10.0+) 系统默认用 \n 作为行结束符。
    • 编程中,字符串中的 \n 表示换行(如 Python、C 语言)。
    • 示例:字符串 "abc\ndef" 显示为:
      abc
      def

3. \r\n(回车+换行,Carriage Return + Line Feed)

  • 组合作用:先回车(回到行首),再换行(移到下一行),合起来表示“一行结束”。
    这是对早期打字机操作的模拟(先回车归位,再换行进纸)。
  • 使用场景
    • Windows 系统 及衍生环境(如 DOS)默认用 \r\n 作为行结束符。
    • 网络协议(如 HTTP、SMTP)和文本格式(如 CSV、JSON)中,常要求使用 \r\n 作为换行符。
    • 示例:Windows 记事本保存的文本,每行结尾都是 \r\n

核心区别对比

符号 名称 ASCII码 代表系统/场景 实际效果(文本显示)
\r 回车符 13 旧 Mac OS、特定协议 光标回到行首(不换行)
\n 换行符 10 Unix/Linux/macOS(现代) 光标移到下一行(同一列)
\r\n 回车+换行符组合 13+10 Windows、网络协议 光标回到行首并移到下一行(换行)

实际应用中的注意事项

  1. 跨平台兼容性

    • 当在不同系统间传输文本时,可能需要转换行结束符(如用工具 dos2unix/unix2dos,或编程时指定文件打开模式)。
    • 编程语言(如 Python)默认会自动处理不同系统的行结束符(文本模式下,读取时统一转为 \n,写入时按系统默认格式输出)。
  2. 二进制 vs 文本模式

    • 在二进制模式下(如读取图片、视频),\r\n 会被视为普通字节;在文本模式下,系统会自动转换行结束符(如 Windows 中将 \n 转为 \r\n 写入)。
  3. 正则表达式

    • 在正则中,\r\n 分别匹配回车和换行符,\r\n 需显式匹配两者组合。

总结

  • \r:复古行首归位符,现代场景很少单独用。
  • \n:Unix系系统的标准换行符,编程中最常用。
  • \r\n:Windows系统的换行符,网络和跨平台场景需注意。

理解它们的区别有助于处理文件读写、文本解析或跨系统协作中的格式问题。

相关文章

【NOIP初赛 】哈夫曼树

【NOIP初赛 】哈夫曼树

根据我已刷的初赛题中基本每套的倒数第五或第六个不定项选择题就有一个关于哈夫曼树及其各种应用的题,占:0—1.5分;然而我针对这个类型的题也多次不会做,so,今晚好好研究下哈夫曼树;  概念:  给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二...

【JAVA】如何在宝塔面板中运行java springboot项目?手把手教程

【JAVA】如何在宝塔面板中运行java springboot项目?手把手教程

1、安装Tomcat选择网站之后,点击Tomcat管理,直接选择版本安装即可。可以选择安装7、8、9这三个版本都可以。2、将JAVA项目打包在IDEA中,右击项目,选择构建package,等待打包完成后,会在target目录下生成一个.jar的文件3、将tar文件上传到宝塔中。并点击添加JAVA项目...

【已解决】Window命令行报错:无法加载文件,因为在此系统上禁止运行脚本。

错误:无法加载文件 D:\Program Files\nodejs\tsc.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 解决方法:...

【PHP】大量 HTTP 请求调第三方接口,接口堵塞引起的 FD 耗尽(too many file open)问题

“FD耗尽”中的“FD”指的是“文件描述符”(File Descriptor)。在Unix和类Unix系统(如Linux)中,文件描述符是一个非负整数,用于标识一个进程打开的文件或其他输入/输出资源,比如网络套接字(socket...

常见License代码开源要求

  常见许可证类型 典型软件 触发代码开源义务前提要求 开源要求和范围 BSD类 如:Apache/BSD/MIT等 Tomcat;OpenSSL 无 无 MPL类 如:MPL/EPL等 FirFox,Eclips...

【随笔】关于开发一个既能日常记账,又能拥有资产管理功能的APP的Idea

随便写了,想到哪里写哪里。最近一直在市面找一款记账APP,但是感觉都不满足我的需求。我的想法是,在普通账本程序的基础上,再加上多人管理。资产管理。资产管理一定要把价格接口对接好。我举个例子,比如有虚拟货币资产ETH 1个,那么就应该在统计的时候,按实时市值进行统计。又或者按照当天的市值统计。关于资产...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。