代码之家  ›  专栏  ›  技术社区  ›  Cedric

当使用ftps连接传输文件时,“二进制模式taransfer”和“ascii模式传输”有什么区别?

  •  2
  • Cedric  · 技术社区  · 18 年前

    我用的是 FTPS公司 发送文本文件的连接 [此文件将包含EDI(电子数据交换)信息] 我已将系统配置为打开ftps连接,并使用put命令将文件写入ftp服务器上的文件夹。 问题是:我应该使用哪种文件传输模式?如何在模式之间切换?

    此外,当通过ftps连接传输文件时,使用哪种模式是“最佳实践”。 如果有人能提供我一个小的ftp脚本,这将是有帮助的。

    7 回复  |  直到 16 年前
        1
  •  4
  •   Darron    17 年前

    这个问题的许多其他答案是一组几乎正确到完全错误的信息。

    ascii模式意味着文件应该被转换成标准文本形式。除其他外,这意味着:

    • nvt-ascii字符集。即使原始文件在其他字符集中,如ascii、ebcdic或utf-8。从技术上讲,这不允许使用第8位设置的字符,但大多数实现不会强制执行。
    • CRLF线端。

    ebcdic模式意味着一组类似的规则,只是线路上的数据应该在ebcdic中。

    本地模式允许发送每字节8位以外的数据。

    图像(或二进制)模式意味着数据应在不做任何更改的情况下发送。它是由用户确保目标系统一旦到达就可以理解数据。

    除此之外,这意味着如果所涉及的系统之一不使用基于ascii的字符集,则使用二进制模式发送文本数据的建议将失败。

        2
  •  1
  •   Victor    18 年前

    ascii模式更改unix和dos格式之间的新行字符。\ n到\r\n和viceversa。

        3
  •  1
  •   pilif    18 年前

    实际上,ascii/binary与第8位无关。这是翻译行尾的惯例。

    当您在Windows机器上与UNIX FTP服务器(FTPS或FTP无关)-协议是相同的时,服务器将在存储文件之前替换L& G.L.G.L.G.T.LF & GT;因此,如果您从UNIX服务器获得文件,则在相反的情况下进行转换。

    ascii模式背后的思想是将行结束符转换为目标平台的相应结束符。

    由于当今世界似乎正在向unix惯例(lt;lf>)趋同,而且几乎所有的当今编辑器(除了记事本)都可以轻松地处理unix行尾,因此ascii模式的日期确实是有编号的,我无论如何都建议始终使用二进制传输模式。

    在传输过程中更改数据的前景无论如何都有些可怕。

        4
  •  0
  •   GodEater    18 年前

    ASCII模式还使得不同用户的文本文件在不同平台上的共享更为简单。他们不必担心默认的行尾(例如CR/LF和LF),因为ascii模式会动态地为他们进行转换。

    但是,对于大多数文件类型,您总是希望使用二进制模式。

        5
  •  0
  •   Dark Shikari    18 年前

    acsii模式基于服务器和客户端平台(cr/lf vs lf)在unix和windows格式之间转换文本文件,binary不转换。当然,如果以ascii模式传输的几乎所有内容都不是文本,则可能会因此而损坏。

        6
  •  -1
  •   stephbu    18 年前

    如果您想要一个精确的副本,数据使用二进制模式-使用ascii模式将假定数据是7bit文本(字符0-127),并截断此范围之外的任何数据。追溯到神秘的7位网络时代,ASCII模式可以节省你的时间。

    在我们所处的全球化环境中,通常会发现非ascii字符,如外语、货币符号等,您应该始终使用二进制模式。

        7
  •  -3
  •   PierreBdR    18 年前

    对于ftp协议,ascii传输模式将认为每个字符的第8位无关紧要,并将其用于错误检查。对于二进制传输模式,您的数据将按原样发送。请注意,以ascii模式发送二进制数据(几乎)总会导致数据损坏。然而,只要发送和接收系统以相同的方式使用第八位(在现代系统中,第八位应该保持在0,以防止与扩展ASCII字符集发生冲突),在二进制模式下传输ASCII数据将是有效的。

    推荐文章