Windows和Linux的换行符CRLF/LF(\r\n,\n)

问题:

有的时候, 我们把一个在windows上修改过的文件拿到linux上用vim打开之后,每行末尾会出现多余的字符 "^M",这是怎么回事呢?

1.CR/LF介绍


CR是Carriage-Return的缩写,即回车;

LF是Line-Feed的缩写,即换行。


CR和LF是在计算机终端还是电传打印机的时候遗留下来的东西。电传打字机就像普通打字机一样工作。

在每一行的末端,CR命令让打印头回到左边。LF命令让纸前进一行。

虽然使用卷纸的终端时代已经过去了,但是,CR和LF命令依然存在,许多应用程序和网络协议仍使用这些命令作为分隔符。


Linux(unix) 和 mac 默认使用 "\n" 作为换行符;

Windows 默认使用 "\r\n" 作为换行符;

2.Unix(Linux)的换行符


Linux 下换行符是 "\n"。

"\n" 在 ACSII表中 对应 LF , ACSII值为 10 ,即0x0a (16进制) 

3.windows下换行符


windows 下换行符是 "\r\n"。


"\r" 在ACSII表中对应 "CR", ACSII值为 13 ,即0x0d (16进制)  。

"\r" 在vim中被解释为 "^M" 。

4. unix/windows格式换行符转换


4.1 在linux上可以使用以下工具进行转换


dos2unix : 将windows风格换行符转换为unix风格换行符
unix2dos:  将unix风格换行符转换为windows风格换行符


4.2 在windows上CRLF和LF的转换


4.2.1 使用dos2unix/unix2dos 转换


下载windows版本的 dos2unix/unix2dos,

dos2unix - Browse /dos2unix/7.5.1 at SourceForge.net

使用方法参考dos2unix工具中

dos2unix-7.5.1-win64-nls/share/doc/dos2unix-7.5.1/dos2unix.htm

example 和 RECURSIVE CONVERSION 章节


4.2.2 在windows上常用的代码编辑器一般都支持CRLF和LF的转换


比如说 VsCode,  在右下角可以选择 LF 或者CRLF;

其他编辑器的操作大同小异。

需要默认设置的话, 在设置里修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高亚奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值