`
wuhuajun
  • 浏览: 93837 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

文本和二进制

    博客分类:
  • java
 
阅读更多
摘自Serv-U网站:
When using ASCII mode, files are actually changed, depending on the server. ASCII mode is used to translate ASCII text files between the server and client. For example when uploading to a UNIX server [CR][LF] (carriage return line feed) is converted to just [LF]. And when downloading [LF] is converted to [CR][LF].

This is used to make sure text files are correct for any environment.

When doing this files are actually changed, and the size and content of files are changed. If you're uploading images or some other binary files it is quite likely that the files will be uploaded or downloaded incorrectly.
文本传输与二进制传输

首先我们来说说文本传输与二进制传输的相同之处:

相同点:

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。



何时使用二进制传输?

可执行文件,图片文件等必须要对换行符进行重新解析的数据应该使用二进制传输。


在Unix和Windows系统之间用ftp传输数据时:

一、传输的是文本数据,则必须用文本格式,否则从Windows到Unix传输时,Windows下的每一个换行为"回车+换行"(0x0D0A),Unix在接收的时候,都将自动滤去其中的"回车",也就是转换为Unix下的单单一个"换行"(0x0A)符。反之,当Windows接收Unix操作系统传输过来的数据时,将自动在每一个"换行"(0x0A)符前添加一个"回车"(0x0D)符。此时如果采用二进制格式传输,操作系统之间将不做相应转换,而Windows和Unix对换行符的解析操作不同,Unix会把Windows传过来的0x0D当做单独的字符解析,这样将出现莫名其妙的乱码,同样,Windows也会把Unix传过来的0x0A当做一个字符而不是解析为换行符(Windows)下的换行符为0x0D0A。

二、如果传输的是二进制数据,则必须用二进制格式。否则如果采用文本格式,如上所述,Windows会在接收到的文件里0x0A前自动添加0x0D,而Unix将自动把所有0x0A前的0x0D删掉,呵呵,想一想,你好不容易编译过的可执行文件传过去之后会变成什么样子?基本不可能是你在本地机器上所看到的样子。

上述只适用于Windows和Unix系统之间传输,同种类型操作系统之间传输不存在转换问题
0
2
分享到:
评论

相关推荐

    文本和二进制文件读写.doc

    文本和二进制文件读写.doc

    otxt2bintxt2otxt.rar_二进制 文本_文本文件 二进制 文件

    在IT领域,文本和二进制文件是两种基本的数据存储形式。"otxt2bintxt2otxt.rar_二进制 文本_文本文件_二进制 文件"这个压缩包涉及了将文本文件与二进制文件之间相互转换的过程。这种转换在计算机科学和编程中具有...

    文本及二进制通信命令

    在计算机通信领域,文本和二进制通信协议是两种主要的数据传输方式,它们各自具有不同的特点和应用场景。本文将深入探讨这两种通信协议的原理、差异以及相关命令的转换。 首先,我们来理解“文本”和“二进制”通信...

    易语言文本和16进制相互转换工具

    2. 转换函数:实现文本到16进制和16进制到文本的核心算法。 3. 输出处理:将转换结果展示给用户,可能包括格式化输出,例如添加空格分隔16进制数等。 4. 用户界面:提供友好的交互界面,允许用户选择转换类型并提交...

    MySQL存取大文本及二进制文件(图片)

    为了解决这个问题,MySQL提供了BLOB(Binary Large Object)和TEXT类型,它们专门设计用来存储大量的文本和二进制数据。 1. **BLOB和TEXT类型** - **BLOB** 类型用于存储二进制数据,有TINYBLOB、BLOB、MEDIUMBLOB...

    Node.js-istextorbinary-检查一个文件是否文本或二进制。

    在Node.js环境中,开发人员经常需要处理各种类型的文件,包括文本文件和二进制文件。在实际应用中,区分这两种类型的文件至关重要,因为处理方式和读取策略会有所不同。"istextorbinary"是一个非常实用的Node.js模块...

    基于JAVA NIO 的轻量级消息传输框架。主要功能包括:文本消息传输、二进制文件传输、文本及二进制混合传输.zip

    在这个基于JAVA NIO的消息传输框架中,我们看到了三个主要功能:文本消息传输、二进制文件传输以及文本和二进制混合传输。这些功能使得框架能够灵活地处理不同类型的通信需求。 1. **文本消息传输**: 在网络通信...

    文本到二进制的转换,比较简单。

    文本到二进制的转换是计算机科学中的基本概念,它涉及到信息在计算机内部的表示方式。在计算机系统中,所有数据最终都会被转化为二进制形式,因为计算机只能理解和处理二进制数字(由0和1组成)。这个过程对于理解...

    易语言-文本转二进制

    在易语言中,实现文本转二进制主要涉及到字符串处理和二进制数据操作。首先,我们需要理解文本和二进制的基本概念。文本是人类可读的字符序列,通常基于某种字符编码标准,如ASCII或Unicode(UTF-8)。二进制数据则...

    matlab读取comtrade文件支持文本与二进制

    matlab读取comtrade文件支持文本与二进制

    将二进制格式的stl文件转换的文本格式的stl文件

    总结来说,STL文件的文本和二进制格式各有优缺点,"Bin2AscOfSTL"程序通过提供二进制到文本的转换功能,使得用户可以根据具体需求灵活选择合适的文件格式。了解这两种格式的特性,并掌握转换方法,对于3D建模和3D...

    文本文件与二进制文件

    "文本文件与二进制文件的差异和应用" 文本文件和二进制文件是计算机存储中的两种基本文件类型。它们的区别不在于物理存储,而在于逻辑上的编码方式不同。文本文件是基于字符编码的文件,常见的编码有 ASCII 编码、...

    判断文件是文本文件还是二进制文件

    在计算机领域,文件可以分为两种主要类型:文本文件和二进制文件。了解如何区分这两种文件类型对于数据处理和程序开发至关重要。文本文件通常由可读的字符组成,如ASCII编码,而二进制文件则包含机器可理解的原始位...

    3维数据stl文件从文本格式转换到二进制格式

    STL文件有两种主要格式:ASCII(文本)格式和二进制(binary)格式。 文本格式的STL文件使用ASCII码存储每个三角面片的数据,包括正常向量和顶点坐标,这种格式易于阅读和编辑,但文件大小较大,传输和处理速度较慢...

    二进制-文本互转工具

    这是一款简易的二进制和文本互转的工具。如将二进制的0x12 34转换成"12 34",或者将文本的"12 34"转换成二进制的0x12 34。 使用方法:二进制转文本的时候只能通过文件方式转换,即二进制数据必须是文件形式(因为...

    Matlab数据读取(文本、二进制等).pdf

    在MATLAB中,数据读取是一项基础且重要的任务,涵盖了多种数据格式,包括文本和二进制文件。本文主要讨论如何在MATLAB中读取二进制数据。 首先,二进制数据读取通常有两种方法:使用导入模板和使用特定的二进制数据...

    二进制文件转换成文本文件,16进制显示.py

    二进制文件srcfile 转换成文本文件 targetfile,16进制显示。 二进制文件srcfile 转换文本文件 targetfile,16进制显示。 二进制文件转换文本文件 targetfile,16进制显示。 二进制文件转换文本文件,16进制显示...

    文本文件转换二进制文件

    在计算机科学领域,数据通常以两种主要形式存储:文本文件和二进制文件。文本文件以人类可读的字符编码(如ASCII或Unicode)存储数据,而二进制文件则包含机器可理解的一系列比特(0和1)序列。本文将深入探讨文本...

    TxtBinConverter.rar

    该工具的核心功能包括两个主要部分:文本文件转二进制和二进制文件转文本。文本转二进制的过程是将文本文件中的字符编码转换成二进制形式,这通常涉及到ASCII或Unicode编码的解析。对于二进制文件转文本,工具需要...

Global site tag (gtag.js) - Google Analytics