前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不同系统的换行符的差异

不同系统的换行符的差异

作者头像
Cell
发布2022-09-20 14:42:59
1.1K0
发布2022-09-20 14:42:59
举报
文章被收录于专栏:Cell的前端专栏

换行符(通常称为行尾、行尾 (EOL)、下一行 (NEL) 或换行符)是字符编码规范(例如,ASCII、EBCDIC)中的控制字符或控制字符序列,用于表示一行文本的结尾和新文本的开头。

周五下班的时候想在 windows 电脑上跑一下 FixIt 看看有没有什么 bug, 然后就发现了 typyit shortcode 开头多出一行空行,mermaid shortcode 则直接语法报错了。

看了一下代码明明有 trim \n 处理,而且 Vercel 打包和 Mac 上运行打包都没问题。debug 了一下才发现 Windows 系统上的换行是 \r\n, 而 Mac 系统上的换行是 \n。于是查了一下不同系统的换行符的差异问题。

历史

简单来说,回车换行这些说法是从打字机那个时代开始叫的,然后在不同的标准下换行符有不同的表现符号。

Windows 系统设计遵循了 CR + LF 的约定,而 Unix 系统则遵循了 LF 的约定, 之后的 类 Unix (Linux, macOS) 系统也遵循了 LF 的约定。

当然也有异类,老版的 mac 系统使用 CR 作为换行符。

表示

  • CR 回车: \r
  • LF 换行: \n

操作系统

换行符号

Windows

\r\n

Unix、Linux、MacOS

\n

classic Mac OS

\r

问题

由于这个差异,会导致文本类的文件在跨系统浏览时会产生一些差异,比如说,Mac 的文本文件在 Windows 打开会全部挤在一行等等。

对于开发人员来说,这很有可能导致某些程序失效,比如正则去除空行等等。

甚至因此,Linux 系统下提供有两个命令用来进行 Windows 和 Unix 文件的转化:dos2unixunix2dos

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 历史
  • 表示
  • 问题
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档