传输模式 ASCII 与二进制

本文详细介绍了FTP传输中的ASCII与二进制模式的区别,包括不同模式下对于文本文件的影响及如何选择正确的传输模式来避免文件损坏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大多数系统(包括UNIX系统)只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。

一般来说: 如果你用错误的模式传输你的图片,你将会无法看到图片,看到的会是乱码。 如果你用错误模式上传CGI脚本,那么就将无法运行你的脚本,会看到类似Server 500 Error的出错信息。

  所以你必须使用正确的模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传.

  ASCII 和BINARY模式区别:

  用HTML 和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。

  BINARY模式用来传送可执行文件,压缩文件,和图片文件。

  如果你用ASCII模式传,会显示一堆乱码,你必须重新用BINARY模式传。

  对于第二种情况,是因为有很多ftp服务器和客户端软件能自动识别文件类型,并采取相应的传输方式。

  ftp是应用层协议,和具体操作系统无关 .

  ASCII 模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如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进行转换,这样保存后或者生成后的文件就和文本模式上传的文件一样了。。。

  原文地址 http://blog.88743.com/article/DailyBlog/291.htm



Ftp,winscp等工具下载文件时候有选项,可选的有二进制方式和文本方式。文本方式又称为ASCII方式

两者区别如下。

  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执行转换,这样保管后或许生成后的文件就和文本方式上传的文件一样了。。。

文章地址 http://www.cnblogs.com/davidluo/articles/1786068.html


Java中post上传默认使用ASCII上传,enctype默认为application/x-www-form-urlencoded,浏览器将使用ASCII向服务器发送数据,导致文件发送失败,上传文件使用文件域<input type="file"/>,并把form的enctype设置为multipart/form-data.

<form action="upload" method="post" enctype="multipart/form-data">


Jpom是一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。 项目主要功能及特点: 1、创建、修改、删除项目、Jar包管理 2、实时查看控制台日志、备份日志、删除日志、导出日志 3、cpu、ram 监控、导出堆栈信息、查看项目进程端口、服务器状态监控 4、多节点管理、多节点自动分发 5、实时监控项目状态异常自动报警 6、在线构建项目发布项目一键搞定 7、多用户管理,用户项目权限独立(上传、删除权限可控制),完善的操作日志 8、系统路径白名单模式,杜绝用户误操作系统文件 9、在线管理Nginx配置、ssl证书文件 10、Tomcat状态、文件、war包在线实时管理 特别提醒:在Windows服务器中可能有部分功能因为系统特性造成兼容性问题,建议在实际使用中充分测试。Linux目前兼容良好 Jpom更新日志: v2.5.1 新增功能 【Server】保存邮箱信息时候验证邮箱配置是否正确 【Server】Token 机制采用 jwt 【Server】git 构建新增进度日志输出 【Server】添加操作监控相关 api 和页面功能 【Server】完善 JWT token 过期自动续签功能 【Server】添加前端页面引导系统(使用 introJs) 【Server】访问 ip 限制,支持配置白名单和黑名单来控制 ip 访问权限 【Server】添加服务自启动脚本创建方案,下面贴一下 Server 端自启动方式: 解决BUG、优化功能 【Server】全局网络请求新增 loading 状态控制 【Server】获取构建日志关闭 loading 状态 【Agent】控制台日志支持定时清空,避免日志文件太大 【Server】在线升级状态判断修复 【Server】修复项目获取进程信息失败 【Server】项目文件管理中显示项目文件存放真实目录 【Server】项目文件管理中文件夹不存在时,loading不消失 【Server】文件管理列表不能正常加载二级以上的目录 【Server】添加监控判断用户是否配置报警联系方式 【Server】初始化安装不能自动登录 【Server】页面组件采用国际化采用 zh_cn 【Server】服务器中验证码无法加载 【Agent】解决控制台输出 Failed to check connection: java.net.ConnectException: Connection refused: connect,因为没有关闭对应的 jmx 【Agent】解决首页控制台 java 进程列表慢的问题(采用定时拉取并缓存) 【server】fix bug: 节点列表页面,展开某个节点之后点击操作按钮会出现新的一行无效数据 【server】fix bug: 节点列表页面,在没有安装节点的情况下,点击终端按钮会在控制台报错。点击这里查看对应 issue 【server】fix bug: 节点管理里面的 Nginx 管理,关闭服务的接口参数传递错了。点击这里查看对应 issue 【server】优化系统配置页面的样式,在小屏幕设备上会出现多个竖方向上的滚动条,甚至有时候会遮住底部的操作按钮 【server】ssh 终端命令交互优化(改优化取消之前版本快捷解压功能,删除命令检查) 【server】优化表格的排版和高度等样式,适配页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值