不同系统的换行符的差异
系统 不同 差异 换行符
2023-06-13 09:12:58 时间
换行符(通常称为行尾、行尾 (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 文件的转化:dos2unix
和 unix2dos
。
参考
相关文章
- 量子计算硬件发展——不同物理系统的交叉与碰撞 | CQCC专题论坛
- 麒麟系统V10 SP2 编译安装 Zabbix 6.0.8 +MySQL 8.0.30 + PHP 7.4.30
- Demo佛萨奇2.0魔豹联盟系统开发技术源码解析
- Android分页查询获取系统联系人信息详解编程语言
- 探索Linux世界:不同版本和用途(linux系统有哪些版本)
- 从Linux SRC文件获取系统性能信息(Linuxsrc文件)
- 使用Linux I2C子系统简化系统设计(linuxi2c子系统)
- 之间的同步Linux系统间同步:建立跨平台数据共享(linux不同系统)
- Linux系统位数测试:洞悉32位与64位的不同(判断linux系统的位数)
- 比较 Linux 与BSD:系统之间的不同(linuxbsd)
- 检测Linux系统下的异常流量检测(linux异常流量)
- Linux的分叉之旅:探索开源系统的不同变体(linux的分支)
- Linux系统:探索开源世界的不同分支(linux的分支)
- 、版本系统探索Linux:分支、版本之间的不同(linux的分支)
- 系统Linux系统:不同分支的融合(linux的分支)
- Mac and Linux:两种不同的操作系统(苹果linux系统)
- 维护Linux系统维护技巧:让系统更快更安全!(linux系统如何)
- 【Linux查询系统位数:一步搞定】(linux查询系统位数)
- Linux的分支:探索不同的系统变体(linux的分支)
- Linux系统如何优化硬盘读写速度?(linux硬盘)
- 在Linux系统中安全移动文件目录(linux移动文件目录)
- 系统让u盘搭载Linux体验新系统(可以装u盘的linux)
- 从硬盘安装Linux系统:简单易行的操作指南(从硬盘安装linux系统)
- Oracle JDK在不同系统的移植实践(oracle jdk移植)
- 苹果后置 3D 传感系统将采用 ToF,这跟 TrueDepth 有什么不同?
- 一个简单的JavaScript数据缓存系统实现代码
- js如何判断不同系统的浏览器类型