当前位置: 首页 > news >正文

【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?

\r\n 和 \n\r 不是一回事,它们是两种完全不同的字节序列,在语义和实际效果上也完全不同。

一、含义对比

序列 字节(十六进制) 含义


\r\n 0x0D 0x0A 回车(Carriage Return) + 换行(Line Feed)
✅ Windows 标准换行符
\n\r 0x0A 0x0D 换行 + 回车
❌ 不是任何主流操作系统的标准换行符

二、行为差异(以终端/编辑器为例)

  1. \r\n(标准 Windows 换行)
    光标先回到行首(\r),再下移一行(\n)。
    结果:正常换行到下一行开头。
    所有 Windows 程序(记事本、CMD、PowerShell 等)都正确识别。
  2. \n\r(非标准顺序)
    先下移一行(\n),光标停在新行的相同列位置;
    再执行 \r,光标回到该行开头。
    视觉效果看似“换行了”,但:
    在某些终端中可能显示异常(如多出空行或光标错位);
    文本编辑器通常不会将其识别为一个换行符,而是当作两个独立控制字符;
    在按行解析文件时(如 fgets、Python 的 readline()),不会在此处分割行!

三、实际影响示例

假设文件内容为(用转义序列表示):
text
Hello\n\rWorld
Python 读取(默认 newline=None):
python
with open('test.txt', 'r') as f:
lines = f.readlines()
结果:lines = ['Hello\n', '\rWorld\n'] (取决于具体实现,但通常不会在 \n\r 处断行)

实际上,Python 的通用换行模式只识别 \n、\r\n、\r 作为行分隔符,不识别 \n\r。
C 语言 fgets():
只会在遇到 \n 时停止(因为它是 Unix 风格换行);
\r 被视为普通字符,保留在缓冲区中。
Git / diff 工具:
会将 \n\r 视为“内容中的特殊字符”,而非换行,可能导致混乱的 diff 输出。

四、结论
✅ \r\n 是合法且标准的 Windows 换行符。
❌ \n\r 是非标准、无实际用途的错误组合,应避免使用。
💡 记忆技巧:
“先回车,再换行” —— 就像老式打字机:先把打印头归位(\r),再滚纸一行(\n)。
所以正确顺序是 \r\n,而不是反过来。

如果你在代码或数据中看到 \n\r,很可能是程序逻辑错误或字符串拼接失误导致的,建议检查并修正为标准格式(\n 或 \r\n)。

http://www.jsqmd.com/news/47053/

相关文章:

  • 深入解析:windows显示驱动开发-CCD api的摘要及方案(一)
  • nju实验七 状态机及键盘输入
  • Gephi如何支持MySQL数据的复杂查询
  • Mozilla CI日志中暴露微软x-apikey的安全事件分析
  • Gephi怎样优化MySQL数据的展示效果
  • Gephi对MySQL数据的导入导出有何支持
  • 智能制造(MOM)-详细设计 - 智慧园区
  • nju实验六 移位寄存器及桶形移位器
  • P6727 [COCI 2015/2016 #5] OOP
  • 完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 基于 Erlang 的英文数字验证码识别系统设计与实现
  • 如何使用IDM嗅探视频并下载?
  • java数据结构--LinkedList与链表 - 教程
  • 洛谷 B4409:[GESP202509 一级] 商店折扣 ← 模拟算法
  • 深入解析:自动化文件管理:分类、重命名和备份
  • nju实验三 加法器与ALU
  • 信息论(八):吉布斯不等式的证明
  • macos: 景观类动态的壁纸和屏保保存在哪里
  • pyppeteer: 得到当前运行中的浏览器
  • 题解:AT_agc028_e [AGC028E] High Elements
  • 基于单片机的篮球比赛计时与比分控制系统设计 - 详解
  • CSP-J2025总结
  • nju实验二 译码器和编码器
  • 如何最低成本注册一个域名?
  • 第四十六篇
  • 2025年送礼水果排行榜权威推荐,拉吾尤摩赣南脐橙荣登榜首
  • AI救星!8个写毕业论文的实用AI工具大揭秘
  • 数据血缘图在数据错误追溯中的应用指南
  • Luogu P10778 BZOJ3569 DZY Loves Chinese II 题解 [ 紫 ] [ Xor Hashing ] [ 线性基 ] [ DFS 树 ]
  • CSS基础语法 - 指南