windows和linux二进制,windows和linux之间传送文本文件,用二进制模式,为何传输后的文件可以正常打开...

用winscp将一个文本文件从windonws传到Ubuntu,默认使用的是二进制模式,如下图。传输后,在Ubuntu上用vim可以正常打开,文件中的换行是正常的。传送前后两个文件的md5是相同的

我的疑问是:Windows和Linux的换行符是不同的啊,而且我用的二进制模式传输的,传输过程中应该不会转换换行符啊,那为何在Linux下还可以正常显式呢?

另外,我用winscp又测试了从Ubuntu传送文本文件到windows,也用二进制模式,在windows下也可以正常打开。

bVmlIW

在Linux下,可以用cat -A file 看到文件中的所有内容,包括换行符。无论是vim还是Windows上的notepad,Notepad,Notepad++都是支持Linux/Windows上的换行符的,所以从他们的显示来看,你往往看不出文本直接的换行符是什么。也可以用Python做到,用二进制模式打开文件,并用repr()查看,repr()会打印出换行符

难道你的vim没显示^M这种字符?

一般来说在win下的换行符是crlf(\r\n),linux是cr(\n),所以如果你在win下用记事本建一个文本传到linux下打开你应该能在换行那看到^M。

反过来的话理论上你应该在记事本里看到黑块。

更新

根据官网的介绍

In the mode the file is not only transferred, but also converted to format used by the target platform. The mode must not be used for binary files (including document files from modern text processors, like Microsoft Word), as they must be transferred without modification.

还有篇博客

The default behaviour for WinSCP and text files (html, sh, css, pl etc.) is to try and be smart and convert the EOL line character to suit the target and destination operating systems.

所以我觉得是winscp给你转换过了

既然采用的二进制模式,那么文本的内容不会有任何变化。关于换行符,默认window使用\r\n, linux使用\n。在linux下“\r”为不可见字符,所以你看到显示正常。同样你在linux下的文本传到window下,你看到显示正常,这个取决于你使用的编辑器,有些window编辑器能正常处理\n为换行,我记得以前win xp自带的notepad就不能识别\n为换行

73bccf0c0b4af35beddca4274520fb45.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值