我理解ASCII模式与二进制文件在FTP方面的区别,但我不明白为什么甚至需要ASCII模式呢?这只是一个传统的东西,通过消除最重要的位来节省时间,因此导致传输的整体速度增加1/8?或者是否有一些我不知道的隐藏用途?
我遇到了很多问题,因为在不同操作系统之间传输文本时,我会忘记将模式切换到bin。我不明白为什么“bin”不仅仅是所有内容的默认设置,特别是今天的网速更快。
Knowwutimean,Vern?
答案 0 :(得分:10)
存在ASCII模式,因此您可以在将文本文件上载到远程系统时获得正确答案,而无需知道该系统的行终止或字符集约定。更重要的是,传输文本文件通常是通过FTP完成的,而不是电子邮件。
要解决您的实际问题:请查看FTP客户端和服务器的文档,以查看是否有默认设置ASCII模式的方法。通常,这就像每次连接时发送一些FTP命令的某种“配置文件”一样简单。
解决您的哲学问题:FTP是一个具有40年历史的协议,具有公平的历史包袱。有一天,你很高兴你依赖的某些协议很久以前就已经标准化了,你仍然可以访问一些旧的数据。
答案 1 :(得分:5)
我一方面投票从ftp服务器中删除ascii模式。任何EOL翻译都可以由使用这些文件的应用程序完成,而且今天许多应用程序无论如何都能理解这两种EOL类型。至少,我希望看到服务器默认切换到使用二进制文件,并且只在请求时才使用ascii。
答案 2 :(得分:1)
实际使用ASCII模式的一种方案是将PHP或Perl或类似脚本从Windows开发机器上传到Unix服务器。使用二进制模式需要单独转换行结束序列,而ASCII模式转换则“自动”执行。
更新:还有一个我们遇到的情况 - 当使用EBCDIC编码向大型机传输数据时,ASCII模式告诉服务器执行编码之间的转换。
答案 3 :(得分:0)
这是使用二进制FTP连接产生的问题的实际示例。在php中有两种类型的注释:
// a single line comment like this
/* a block comment like this */
块评论有一个开始和结束。但单行注释只是在行尾结束。
如果使用二进制连接上传带有单行注释的php文件,则只要点击单行注释,php就会停止运行。它不会将该行的结尾识别为注释的结尾,因此它会有效地注释掉其余的PHP脚本。
但是,如果您在ASCII模式下使用FTP,它将正确读取行的结尾并按预期运行您的PHP代码。