【问题标题】:when using a FTPS connection to transfer a file, what is the difference between a 'Binary mode taransfer' and 'ASCII mode transfer'?使用 HTTPS 连接传输文件时,“二进制模式传输”和“ASCII 模式传输”有什么区别?
【发布时间】:2008-09-17 09:33:18
【问题描述】:

我正在使用 FTPS 连接来发送文本文件 [此文件将包含 EDI(电子数据交换)信息]到邮箱 INOVIS。我已将系统配置为打开 FTPS 连接并使用 PUT 命令将文件写入 FTP 上的文件夹服务器。 问题是:我应该使用什么文件传输模式?如何在模式之间切换?

此外,通过 FTPS 连接传输文件时使用哪种模式是“最佳实践”。 如果有人可以提供一个小的 ftp 脚本,那将会很有帮助。

【问题讨论】:

    标签: ftp sap file-transfer edi ftps


    【解决方案1】:

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

    ASCII 模式意味着文件应该在线上转换为规范的文本形式。这意味着:

    • NVT-ASCII 字符集。即使原始文件使用其他字符集,例如 ASCII、EBCDIC 或 UTF-8。从技术上讲,这不允许设置第 8 位的字符,但大多数实现不会强制执行此操作。
    • CRLF 行结束符。

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

    LOCAL 模式允许发送大小不是每字节 8 位的数据。

    IMAGE(或 BINARY)模式意味着数据应该在没有任何更改的情况下发送。用户有责任确保目标系统在数据到达后能够理解数据。

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

    【讨论】:

      【解决方案2】:

      ASCII 模式在 unix 和 DOS 格式之间更改换行符。 \n 到 \r\n 反之亦然。

      【讨论】:

        【解决方案3】:

        其实 ASCII/BINARY 与第 8 位无关。这是翻译行尾的约定。

        当您在 Windows 机器上与 Unix FTP 服务器(FTPS 或 FTP - 无关紧要 - 协议相同)通信时,服务器会将任何 -组合替换为 在存储文件之前进行反向翻译,以防您从 unix 服务器获取文件。

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

        由于当今世界似乎正在​​向 unix 约定 () 收敛,并且当今几乎所有的编辑器(除了记事本)都可以轻松处理 Unix-Line-Endings,因此 ASCII 模式的日子确实已经屈指可数了我无论如何都会建议始终使用 BINARY 传输模式。

        无论如何,在传输过程中更改数据的前景有些令人恐惧。

        【讨论】:

          【解决方案4】:

          ASCII 模式还使最终用户更直接地跨不同平台共享文本文件。他们不必担心默认的行尾(例如 cr/lf 与仅 lf),因为 ASCII 模式会即时为他们进行翻译。

          不过,对于大多数文件类型,您总是希望使用 BINARY 模式。

          【讨论】:

            【解决方案5】:

            ACSII 模式基于服务器和客户端平台(CR/LF 与 LF)在 UNIX 和 Windows 格式之间转换文本文件,而二进制则没有。当然,如果您以 ASCII 模式传输几乎所有非文本的内容,它可能会因此而损坏。

            【讨论】:

              【解决方案6】:

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

              在我们生活的全球化环境中 - 找到非 ascii 字符是很常见的,例如外语、货币符号等 - 您应该始终使用 BINARY 模式。

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                • ASCII 传输模式将不允许修改第 8 位。如果您的文件实际上不包含文本,ASCII 模式只会导致数据损坏。如果 2 系统不同意字符集,则以二进制模式传输 ASCII 并不总是有效。
                猜你喜欢
                • 1970-01-01
                • 2016-11-22
                • 2015-04-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-09-17
                • 2020-01-25
                相关资源
                最近更新 更多