windows和linux之间传送文本文件,用二进制模式,为何传输后的文件可以正常打开
用winscp将一个文本文件从windonws传到Ubuntu,默认使用的是二进制模式,如下图。传输后,在Ubuntu上用vim可以正常打开,文件中的换行是正常的。传送前后两个文件的md5是相同的
我的疑问是:Windows和Linux的换行符是不同的啊,而且我用的二进制模式传输的,传输过程中应该不会转换换行符啊,那为何在Linux下还可以正常显式呢?
另外,我用winscp又测试了从Ubuntu传送文本文件到windows,也用二进制模式,在windows下也可以正常打开。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在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。
反过来的话理论上你应该在记事本里看到黑块。
更新
根据官网的介绍
还有篇博客
所以我觉得是winscp给你转换过了
既然采用的二进制模式,那么文本的内容不会有任何变化。关于换行符,默认window使用\r\n, linux使用\n。在linux下“\r”为不可见字符,所以你看到显示正常。同样你在linux下的文本传到window下,你看到显示正常,这个取决于你使用的编辑器,有些window编辑器能正常处理\n为换行,我记得以前win xp自带的notepad就不能识别\n为换行