本文介绍了ftp命令中二进制模式和ascii模式的区别,内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。
FTP可以传输各种格式的文件,通常由系统决定。大多数系统(包括UNIX系统)只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,由回车键和换行符分隔,而二进制可以传输字符,无需转换或格式化,二进制模式比文本模式更快,可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式.
一般来说,如果你以错误的模式传输你的图片,你将看不到图片,但你会看到乱码。如果您在错误模式下上传CGI脚本,您将无法运行您的脚本,并且您将看到类似于服务器500错误的错误消息。
所以你必须使用正确的模式。图片和可执行文件必须以BINARY模式上传,CGI脚本和普通HTML文件必须以ASCII模式上传。
ASCII 和BINARY模式区别:
用HTML和文本编写的文件必须以ASCII模式上传。以BINARY模式上传会破坏文件并导致文件执行错误。
BINARY模式用于传输可执行文件、压缩文件和图片文件。
如果以ASCII模式发送,会显示一堆随机码,必须再次以BINARY模式发送。
在第二种情况下,有许多ftp服务器和客户端软件可以自动识别文件类型并采用相应的传输方法。
Ftp是应用层协议,与具体操作系统无关。
asciI模式和BINARY模式的区别在于回车和换行的处理。二进制模式不处理任何数据。ASCI模式将回车符和换行符转换成本机的回车符,如Unix下的\n,\r\n下的\ n,Windows下的\r \ n和Mac下的\ r \ n。
ascii模式下会转换文件
不能说不同的系统对回车、换行符有不同的解释。
但是不同的系统有不同的行结束符.
Unix系统下行终结符是一个字节,也就是十六进制的0A。
ms的系统是两个字节,也就是十六进制的0D0A。
所以当你用ascii方式从unix的ftp server下载文件时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件比如可执行文件、压缩包什么的,就肯定不能用了。如果你的文件就是unix下的文本文件,你用 ascii模式是正确的,要是误用了binary模式,你在windows上看这个文件是没有换行的,里面是一个个的黑方块。
一般来说,我们最好都使用二进制方法,以确保不出错。如果文本格式转换有问题,即unix格式
有许多工具可以用来在dos格式的文本和ftp传输的文本之间进行转换。不要冒险,尤其是对这些事情不是很清楚的时候。
您可以使用MIME将所有字符转换为0到128之间的字符,然后传输它们,然后在接收方反转接收的字符MIME。我们通常使用这种字符转换方法发送电子邮件。
补充:文本模式和二进制模式传输文本文件的具体区别可以由在linux下使用“cat -A 文件名”看到两者的区别,.来做当然前提是windows下上传的文本是dos格式,可以通过UltraEdit等高级文本编辑器查看。两者的区别在于二进制模式上传的文本比文本模式多了一个m符号。这是windows下dos格式的/r回车符,也就是上面提到的十六进制0D。在vi下,使用全局替换:% s/m//g[^M使用Ctrl+V+M而不是直接输入^M]删除所有回车或使用dos2unix文件进行转换,以便保存或生成的文件与以文本模式上传的文件相同。
我希望在这里分享ftp命令中二进制模式和ascii模式的区别。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107015.html