在什么情况下我应该使用ASCII通过FTP传输文件?(我并不是在问ascii-xfer和bin-xfer之间的区别)

在什么情况下我应该使用ASCII通过FTP传输文件?(我并不是在问ascii-xfer和bin-xfer之间的区别),ftp,Ftp,我理解FTP中ASCII模式和二进制模式之间的区别,但我不理解的是为什么需要ASCII模式?这是否只是一个传统的东西,它通过消除最重要的位来节省时间,从而导致传输的总体速度增加了1/8?还是有一些我不知道的隐藏用途 我遇到了很多问题,因为在不同操作系统之间传输文本时,我会忘记将模式切换到bin。我不明白为什么“bin”不仅仅是所有东西的默认值,尤其是在互联网速度快得多的今天 Knowwutimean,Vern?ASCII模式存在,因此当您将文本文件上载到远程系统时,无需知道该系统的行终止或字符集

我理解FTP中ASCII模式和二进制模式之间的区别,但我不理解的是为什么需要ASCII模式?这是否只是一个传统的东西,它通过消除最重要的位来节省时间,从而导致传输的总体速度增加了1/8?还是有一些我不知道的隐藏用途

我遇到了很多问题,因为在不同操作系统之间传输文本时,我会忘记将模式切换到bin。我不明白为什么“bin”不仅仅是所有东西的默认值,尤其是在互联网速度快得多的今天


Knowwutimean,Vern?

ASCII模式存在,因此当您将文本文件上载到远程系统时,无需知道该系统的行终止或字符集约定。当传输文本文件比电子邮件更经常地通过FTP传输时,这一点更为重要

为了解决您的实际问题:检查FTP客户端和服务器的文档,看看是否有默认设置ASCII模式的方法。通常,这就像某种“配置文件”一样简单,每次连接时都会发送一些FTP命令


为了解决你的哲学问题:FTP是一个有着40年历史的协议,它有着公平的历史包袱。总有一天,你会很高兴你所依赖的某个协议很久以前就被标准化了,你仍然可以访问一些旧数据。

ASCII模式的一个实际使用场景是将PHP或Perl或类似脚本从Windows开发机器上载到Unix服务器。使用二进制模式需要单独转换行结束序列,而使用ASCII模式时,“自动”执行转换


更新:我们还遇到了另一种情况——当向使用EBCDIC编码的大型机传输数据或从大型机传输数据时,ASCII模式会告诉服务器在编码之间执行转换

I,作为一个人,投票取消ftp服务器的ascii模式。任何EOL转换都可以由使用这些文件的应用程序来完成,今天的许多应用程序无论如何都理解这两种EOL类型。至少,我希望服务器在默认情况下切换到使用二进制,并且仅在请求时使用ascii

下面是一个使用二进制FTP连接的实际问题示例。在php中,有两种类型的注释:

// a single line comment like this
/* a block comment like this */
块注释有一个开始和一个结束。但是单行注释只在行的末尾结束

如果使用二进制连接上载带有单行注释的php文件,php将在点击单行注释后立即停止运行。它不会将行的结尾识别为注释的结尾,因此它会有效地注释掉php脚本的其余部分


但是,如果您在ASCII模式下使用FTP,它将正确读取行尾,并按预期运行php代码

这里定义得很好:。哪一部分特别令人困惑或难以解释?这可能是离题的。但是,ASCII模式用于传输文本,即使在今天,不同的系统也有不同的表示文本的方式-FTP提供了在这些系统之间进行转换的最低comon分母机制-否则,您可能会在远程系统上传输文本文件,而在您的系统上则会成为垃圾。请记住,FTP不仅仅用于现代操作系统之间,它还用于获取30年前的东西。您的“两者”注释所暗示的两种EOL类型不仅仅是:Windows上的CR/LF、Unix上的LF和Macintosh上的CR。谁知道还有什么。但我同意你的看法:使用ASCII模式可能会导致高位丢失或其他无意的转换,这使得它在IMO中完全无用。我的winadows机器上的文本编辑器在这两种类型的EOL中都能正常工作。。。有些人会问我是否要从unix转换为windows风格。对于应用程序来说,这一切都很好,但对于文件传输协议来说,试图弄清楚这一点很糟糕。@ALEXintlsos“两者”都是因为Mac在2001年从Mac OS X 10.0开始切换到LF(如UNIX)。您确定没有二进制和ASCII切换吗?根据其他问题,似乎ASCII是删除换行符的原因,二进制是修复方法:有趣。。。我的经历与你链接的页面相反。当我们强制它是ASCII时,注释就起作用了,但我可能需要回去检查一下,以防我弄错了。