FTP 客户端(包括那些以编程方式使用的客户端)允许用户在上传文件时选择 ASCII 或二进制传输。有些客户端还支持某种自动传输方式,您可以让 FTP 客户端自行决定。
选择一种格式而不是另一种格式的正确理由是什么?如何决定?除了支持自动检测的客户端之外,如何才能自动做出这一决定?
答案1
Windows 使用回车符和换行符来显示文本文件中行的结束。Unix 通常只使用一种(我认为是换行符)。当您以文本形式通过 ftp 文件时,ftp 程序将为您转换行尾。在二进制模式下,文件将完全按原样传输。因此,如果您要传输文本文档,请使用 ASCII。任何其他格式和二进制格式可能都是您最好的选择。正如其他人指出的那样,大多数现代文本编辑器都会处理行尾(记事本不会,也不是现代的 :) ),因此二进制是更安全的选择。我也同意@njsf,我不喜欢有人背着我更改文件。如果有必要,我的编辑器完全能够通过查找和替换来修复行尾。
答案2
如今,大多数文本编辑器都会自动检测并适应 unix/dos/mac 行尾,我发现使用 ASCII ftp 传输的理由很少。我总是使用二进制。
我不喜欢秘密地更改文件。
实际上现在我更倾向于使用 scp 而不是 ftp,而 scp 只是复制位……
答案3
始终使用二进制。手动进行转换,如果需要——更有可能的是永远不需要。
ASCII 模式只是在不同遵循的系统之间进行行尾转换。这在当今绝对毫无意义。大多数编辑器都会适应,XML 解析器大多会忽略它们,只有在尝试编译 .c 文件或在 Unix 上运行具有 MS-DOS 行尾的 sh 文件时才会遇到问题 —— 但这通常仅由于 ASCII 模式传输错误而发生。
直接拒绝 ASCII 模式。现代 FTP 客户端无论如何都会默认使用 BINARY 模式。
答案4
请注意,将文本传输到一些系统使用文本(不是真正的 ASCII)模式可以加快速度,因为它们不使用字符集。例如,IBM 大型机和类似系统上的 EBCDIC。
只要两个系统使用相同的基本字符集,二进制可能就不会那么麻烦。