You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StreamReader自定义换行符: 与 的区别及NetworkStream处理咨询

关于\n与\r的设计思路区分
  • 两者起源于早期机械打字机的物理操作:\r(回车,ASCII 13)对应打印头回到当前行起始位置,\n(换行,ASCII 10)对应纸张向下滚动一行。
  • 不同操作系统基于历史习惯形成了不同换行规范:
    • Unix/Linux类系统直接用\n表示换行,设计时将“回车+换行”的物理操作合并为单个字符逻辑
    • DOS/Windows系统保留\r\n组合,确保打印或显示时先归位再换行,避免内容重叠
    • 早期Mac系统单独使用\r作为换行符
  • 设计核心差异是场景适配:单独的\r可用于光标回到行首但不换行的场景(比如终端中实时覆盖当前行的进度提示),\n则是纯粹的换行逻辑。如今多数系统和应用已向\n靠拢,但为兼容性仍保留对\r和\r\n的支持。
NetworkStream接收单独\r的处理逻辑

NetworkStream是底层字节流实现,它不会对\r做特殊处理——只会将其视为普通ASCII字节(值为13)传输和存储,本身没有专门针对\r的检查属性。

对\r的解析处理属于上层应用或包装类的职责:

  • 比如StreamReader会根据自身NewLine属性(默认值为系统默认换行符)识别换行,只有当NewLine设置为\r时,单独的\r才会被当作换行触发点;
  • 自定义网络协议场景下,需由开发者自行判断接收到的\r字节,按协议规则处理。

内容的提问来源于stack exchange,提问作者NightCity10932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:15:42