首先我们来说说文本传输与二进制传输的相同之处:
相同点:
1,无论是文本传输还是二进制传输,其实均是将被传输对象转化为二进制字节进行传输的,很多人认为文本传输,顾名思义,就是网络直接传输文本,,,,这是不对的。。。。。
2,无论是文本传输还是二进制传输,均是需要有一定的编码方式的。如果一个被传输对象是utf8格式的字符串,那么无论是文本传输还是二进制传输给客户端,客户端解析也必须使用utf8进行decode来获得该字符串。
不同点:
ASCII 方式和BINARY方式的区别是回车换行的处理,binary方式不对数据执行任何处理,ASCII 方式将回车换行转换为本机的回车字符,比如Unix下 是/n,Windows下是/r/n,Mac下是/r
ASCII 方式下会转换文件,不一样的系统有不一样的行完毕符,unix系统下行完毕符是一个字节,即十六进制的0A,而ms的系统是两个字节,即十六进制的0D0A所以当你用ascii方式从unix的ftp server下载文件时(不论是二进制或许文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以假设你的文件是二进制文件 比如可执行文件、紧缩包什么的,就肯定无法用了。
为什么操作系统对于换行符的定义不同呢,因为他们采用了不同的编码解码规范(字符集),依照不同的码表对二进制数据进行解析的原因。
假设你的文件就是unix下的文本文件,你用 ascii方式是正确的,要是误用了binary方式,你在windows上看这个文件是没有换行的,内部是一个个的黑方块。普通来说,咱们最好都用binary方式,这样可以保证不出错。假设有文本格式转换的疑问,即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 file执行转换,这样保管后或许生成后的文件就和文本方式上传的文件一样了。。。
何时使用文本传输?
当需要被传输的数据需要在多个操作系统打开,且不同的操作系统的默认编码解码解析字符集不同时。比如传递的是一个文本文件时,由于会出现换行等情况,而不同的操作系统默认码表对应换行符的二进制编码是不同的,windows采用unicode,unix采用ansci。
何时使用二进制传输?
可执行文件,图片文件等必须要对换行符进行重新解析的数据应该使用二进制传输。