现在的位置: 首页 > 综合 > 正文

ftp-window与linux文件传输(0A,0D 0A)-linux

2014年09月05日 ⁄ 综合 ⁄ 共 872字 ⁄ 字号 评论关闭

【废话】为了ciscoteam的出题,顺便学习了一下FTP的ASCII和BINARY(什么?你原来不知道?嗯嗯,原来我就是这么无知,不要BS偶...)
平时用FTP拉文件,下载上传都挺畅的,根本没care过ASCII或BINARY的模式问题——好像用哪种都一样有效。直到那天Promise开个FTP让我连接,发现List出来的中文是乱码,在CuteFTP也找不到使用Unicode编码的选项,才想起我还不懂这个-_-——扯远了,回来。

==========================================================

FTP有两种传输模式:BINARY和ASCII

BINARY模式
复制时保留文件的位序,逐位拷贝原始文件而不管内容——即使对目的机器操作系统来说该文件是没意义的。

ASCII模式
复制时候会进行调整,主要体现为对不同操作系统的回车/换行/结束符等进行转译。
比如,回车符号在Unix下是\n(0A),Windows下是\r\n(0D0A),Mac下是\r(0D)。当在一个Windows操作系统上用ASCII方式从Unix服务器上下载文件时——无论是文本文件还是二进制文件——都会进行检测和转换:每检测到一个0A,则认为是回车符号,自动插入0D形成Windows下的回车符。显然,如果下载的是文本文件,这种转换是很有用的——我们能在Windows下看到分行后的文本,否则我们看到的是中间夹杂着小黑方块的不换行的一堆文字;然而如果下载的是二进制文件(比如exe或rar),这种转换无异于画蛇添足,破坏了整个文件。

因此,如果服务器和客户端的OS不相同,对于ASCII文件(文本文件)采用ASCII模式下载,对于非文本文件采用BINARY模式下载;如果两端OS相同,两种方式具有同样效果(-_-MS用户太多了,so我们平时都不用注意这些...)。
有些经常游走在两个OS之间的人员采取的习惯做法是:将在Windows下编辑的文件转换成Unix模式(譬如使用UltraEdit),而FTP默认用BINARY模式传输。

【上篇】
【下篇】

抱歉!评论已关闭.