machao 发表于 2007-5-17 03:42:50

关于“什么是纯文本文件”的思考

现在的大学生,除了从边远地区出来的,基本上从中学,甚至从小学就接触计算机了。在中学就有计算机的课程,就会讲到ASCII编码了。



我一般是上大学2、3、4年级的课程,面对的是电子工程专业的学生。在这些学生中,确实有许多学生的计算机能力“比较”好,他们甚至非常“傲”,因为确实有许多的教师计算机的水平很臭。所以,每次学期开新课,我都要“压压”学生的“傲”气,提出一个非常“难”的问题考考学生。



这个非常“难”的问题就是“什么是纯文本文件”。这个问题为什么难?因为我问过电子、计算机、软件专业的学生,很少有人正确的,从专业的角度给出完整的回答。



典型的回答是:TXT文件就是纯文本文件;用windows的记事本编写的文件是纯文本文件。对于其它专业的学生可以认为是对的,但对于电子、计算机、软件专业的学生来讲,这样的回答说明什么问题?



下面的系列问题都与这个问题相关:



在支持中文环境的计算机中,

1。什么是纯文本文件?

2。什么是文本文件?

3。文本文件和DOC文件(WORD的缺省格式文件)以及HTML文件有何区别?

4。DOC文件与HTML文件有什么相同之处和不同之处?

5。在屏幕上显示文本文件的内容需要经过那些转换?

6。文件的扩展名可以任意改变吗?扩展名有那些作用?



我认为这些问题对于电子、计算机、软件专业的学生讲,应该是小儿科的问题,可是不知道为什么总是的不到满意的回答。



如果你很多年面对计算机,又有兴趣,不妨试试,给出你的答案。或许你能在思考这些问题的同时,体会和认识到更深层次的含义,到底应该如何学习。

gkw9142 发表于 2007-5-17 09:04:49

这些问题很好玩的,我来说一些,希望能够抛砖引玉。



首先、关于6。文件的扩展名可以任意改变吗?扩展名有那些作用?



  我在第一次接触计算机的时候,老师告诉我标准DOS系统的文件命名是按8.3格式。



    8.3格式的文件命名格式形式上可以说是XXXXXXXX.XXX,'.'号之前的称为文件名,‘.’号之后的称为扩展名,文件名最大为8个字符,扩展名最大为3个字符,扩展名可有可无但必须有文件名。文件名用于标记一个文件,扩展名用于标记一个文件的类型。



  DOS是最先MS作的,MS后来做了Windows系列操作系统,Windows很大程度上继承了DOS的一些习惯,其中有“文件名+扩展名”的文件命名方式,同样文件名用于标记一个文件,扩展名用于标记一个文件的类型。我们知道在Windows下通过一些手段可以改变文件的文件名和扩展名。



  Windows是一个具有 鼠标和GUI的操作系统,为了和屏幕前的用户更好的交互,文件类型被赋予另外一些东西:图标、默认的打开方式和操作。



  在DOS里扩展名实际意义上只是给用户看这个文件是什么类型,在Windows里扩展名的实际意义被扩展了:

  一、Windows依据扩展名给每类文件赋予了一个特有的图标,用户可以通过看图标的样子来确定一个图标,当然你依旧可以通过读扩展名来确定文件的类型;

  二、Windows依据扩展名在右键菜单里放置了不同的操作,例如:打开。

以上两点可以在Windows的文件夹选项或则注册表里修改,所以用户和软件可以定义这些东西。更有意思的是文件可以没有扩展名。



  从扩展名的实际意义和Windows对扩展名的行为上看,扩展名表面上只是相当于一个具有某种可操作或者被操作能力的“标签”,就像“指针”或者“连接”,在Windows里MS对扩展名具体的定义应该是类(class)的类名。扩展名对文件本身的内容应该没有定义。



  有一些好玩的事情,我们可以把一个C源代码的文件名(比如:C源代码.c)改为“C源代码.mp3”,这样它的图标和右键操作全变了,我们用右键里的操作“播放”,播放器会告诉我们“文件C源代码.mp3是不可识别的文件类型”或则其它类似的信息。



  我们还可以把一个mp3音乐的文件名(mp3音乐.mp3)改为 “mp3音乐.c”,我们用右键里的操作“打开”,在记事本里我们看到的铁定不是C源代码。用播放器通过某种手段来打开文件mp3音乐.c ,播放器是可以放出音乐的。



  通过以上的例子,我可以得到:扩展名对文件本身的内容没有定义,也没有影响,也就是说我们可以任意改变文件的扩展名,而不影响文件的内容。当然由于扩展名的最初作用(扩展名用于标记一个文件的类型),改变文件的扩展名可能对文件的操作者(例如:Windows、播放器、记事本)有影响。



  我不是一个高手,我对扩展名的认识只有这些,但扩展名的学问不应该只是这些,扩展名在文件系统应该有很多定义,我还不大了解。

-----此内容被gkw9142于2007-05-17,09:10:34编辑过


-----此内容被gkw9142于2007-05-17,09:15:50编辑过

machao 发表于 2007-5-17 23:22:08

楼上的解释非常专业,非常全面和正确了,不错。



实际上,扩展名只是对文件的格式做一个简单的标注,所以理论上讲可以任意改变文件的扩展名,对文件本身没有任何影响。



在DOS系统时,扩展名用于提供用户对文件类型进行识别。在WINDOWS系统中,扩展名被加上了类似“连接”功能。系统通过对扩展名是识别,自动选择不同的“游览器”来打开这些文件。如对DOC文件,先自动打开WORD系统,然后由WORD系统打开DOC文件等。这样的例子太多了。所以在实际使用中,尤其在WINDOWS中,通常扩展名不能随便更改的。尽管改文件扩展名对文件内容没有任何影响,但给正常的操作带来了非常多的麻烦。随便更改扩展名对于70%的用户是个灾难,其为他们只是“会”用计算机,而不是真正懂计算机。所以在通常情况下,扩展名是不允许随便改动的。



对于电子、计算机、软件等专业的人讲,应该是懂计算机的。如果在专业课上回答“TXT文件就是纯文本”就不能算正确了,至少不能得满分,因为他没有回答出纯文本文件最根本的实质,我无法知道他是真的“懂”还是只是会“用”。



会“用”计算机和懂计算机有天大的差别。各位评估一下,自己属于哪一种类型的?

zjybest 发表于 2007-5-18 19:46:56

3。文本文件和DOC文件(WORD的缺省格式文件)以及HTML文件有何区别?

   DOC类型文件本质上是一个结构,但是这个结构没有公布,不过具我所知,和他相类似的技术你可以看看Storage和Stream,还有接口IStorage和IStream。

HTML文件本质上也是文本文件,但是里面可以有脚本代码(由客户机的脚本解析器分析运行)和HTML标识块和ASCII以级文字构成,由IE或其他的流览器进行分析然后显示出来。你可以使用telnet host/html_filename.htm:80看到获得的HTML代码。

文本文件就是有ASCII码构成的文件(一般可以通过type 命令直接看文件内容),但是可以是伪程序文件,比如bat文件,由操作系统的Shell来调用运行.

  瞎说几句.

machao 发表于 2007-5-18 22:32:00

3楼的看来读过不少书,可是没有归纳和总结出实质的东西。这样的回答我只能给2-3分(满分10分)。

zjybest 发表于 2007-5-20 18:44:51

只是学习,谈个人的想法和认识。谢谢马老师点评,

DOC的本质:是复合文档文件(个人认为不是文本文件因为里面有非显示编码),就是里面可以有各种各样的媒体内容,封装在一个文件之中,同时提供一些SDK来快速操控这个文件。比如DOC文件里面可以有声音,图片和文字,但是保存的时候就是一个文件(封装在一起,但是由于DOC的专利性,暂时没有提供直接操控的方法,所以导致很多软件导出到DOC文件类型出现问题,比如WPS2000)。这项技术是有用的。

HTML文件本质上是文本文件,但是里面可以有脚本代码(由客户机的脚本解析器分析运行)和HTML标识块和ASCII以级文字构成,

machao 发表于 2007-5-21 20:35:12

算了,还是我解释吧。你们看看,从中学开始,你们到底学到了什么?就是“背”概念、“抄”书为考试?还是真正学到些东西?为什么会这样?



问题1:



首先,90%的人没有真正理解ASCII码表真正的作用和含义。ASCII码是全世界计算机上最基本的编码表,它是7个bit的编码表,用一个字节表示的话,最高位必须为另。其本意是用二进制码代表26个大小写的字符,以及数字符号0-9的字符,还有一些标点符号等。这些符号用于记录你的键盘输入的符号,如果将这些符号送显示的话,显示器硬件会根据你的ASCII码显示出相应的符号。另外,在ASCII码中,还定义了几个基本的控制符号,如回车、换行等。这些控制符号送到显示器的话,不会显示什么字符了,而是控制显示的方式,如将光标回到最左面并下移一行并下(回车换行)。



从软件角度出发,组成任何一个文件内容的最小单元为字节(从硬件角度,有时需把BIT作为最小单元)。因此,不管什么文件,只要该文件内容的每个字节都是ASCII码,或者说,只要构成文件内容的每一个字节的高位都是另的话,这个文件就是纯文本文件!!



由于所有的计算机都采用ASCII码表,所以纯文本文件的内容可以在任何一台计算机上显示(除了其中的控制代码),不需要特殊的“游览器”之类的软件。



====================================

问题2:



ASCII表只是对英文字符进行了编码。对于不同语言的国家为了能在计算机上显示自己国家的文字,制定了不同的编码。但所有的编码必须兼容ASCII码。中文系统中采用的编码典型为GB2312(国内),由于需要和ASCII兼容,所以中文的编码采用2个字节的区位编码。不管你采用那种中文输入方式,最终在文件中记录的是该中文字的机内码(不是字型码),占2个字节(实际上,所谓一个中文字为2个英文字符的实质再此!)高位均为1。至于一个2字节的中文编码怎么能在屏幕上显示为通常是32字节构成的中文字型,请自己学习吧。弄清楚了你就知道为什么有人要找12*12点阵的字库,它用在何处。这些基础和知识,对与设计要能显示中文的嵌入式系统都是非常必要的。



回到文件本身,我们给出文本文件的定义(中文环境下)。对于任何一个文件,其内容全部是由GB2312编码构成的就是文本文件。文本文件与纯文本文件的差别是,其有的字节的高位是1的。文本文件的内容不是在所有的计算机上都能显示的。要能正确的显示,该计算机必须运行有支持GB2312编码系统。在中文文本文件中,一个字节的高位为0,则按ASCII码处理。而一旦出现了一个字节的高位为1,那么其后面的一个字节的高位也必须为1,而且两个字节必须是对应的GB2312中的机内码。因此,在中文文本文件中,高位为1的字节必须是成双出现,而且必须构成为对应于GB2312中的机内码。



现在,一般都将纯文本文件和文本文件当作一回事,其实他们之间还是有区别的。



===========================================================

问题3和4:(以下以纯英文系统环境为例)



采用最普通和简单的方式显示纯文本文件的话(如使用WINDOWS的记事本)所显示的字符是单一的,没有大小、颜色、字体等变化,因为文件内容除了个别控制符号都是可显示的字符。

人们开始设想,将文本文件的内容分成2个部分:一部分是需要在屏幕上显示的字符信息;而另一部分不是需要显示的信息,而是对需要显示信息的显示方法的定义,如用什么样的颜色、大小、字型等等。那么怎样区别这两部分的内容呢?有两种不同的方法。



一种是类似与HTML文件的方法。其文件内容的每一个字节还是ASCII码,但其规定在<>中的内容,包括<>这两个符号是不需要显示的,作为对显示的定义(如大小、字型、颜色等当然还有其它更多的作用)。然而这样的定义对于普通的类似记事本这样的软件工具是不能处理的,必须使用专用的软件去打开和处理,才能达到所预定的显示效果。因此对于HTML文件来讲,要看到预定的结果,就需要在专用软件“游览器”中打开。该游览器知道文件中那些内容需要显示,而且以什么方式显示。记事本不是专用的“游览器”,它只是简单的纯文本文件“游览器”,所以它把HTML的所有内容都显示出来。



HTML本质上是纯文本文件,但它是根据HTML规范编写的纯文本文件。这种文件要得到它所设计的显示效果,需要在能解析HEML标记的专用软件“游览器”中打开。



DOC文件不是纯文本文件,因为该文件的内容中有许多单个字符高位为1,不是ASCII码表中表示的字符。在DOC文件中的这些高位字符为1的字符就是第二种方法,它不是要显示的信息,而是作为一种特殊的控制符或描述符,是对显示的内容进行显示方式的定义,以及一些其它功能的定义。当然微软没有公布这些特殊的定义,我们不了解具体的形式。但从某种意义上讲,DOC文件与HEML文件有相同之处,即文件本身的内容分成2部分,一部分是需要显示信息字符,而一部分是特殊功能的标记和控制符等。不同的是HTML的这些特殊内容是用<ASCII码字符>的形式描述,在记事本中可以看到描述的定义;而DOC文件中的这些描述使用的是非ASCII码字符(包括一些处在非ASCII码之间的ASCII字符),它们在记事本中不能看到。



另一个HEML和DOC文件的类似点是,要达到文件所设定的显示效果,必须在相应的,能够解析和处理这些特殊内容的“游览器”中打开。DOC文件的“游览器”就是WORD系统。WORD知道DOC文件中那些特殊功能标记和控制符,它不是去显示它们,而是根据它们的功能可定义去显示被指定的字符信息。



由于DOC文件的格式没有公开,但它的基本结构我们是可以通过比对和分析了解的。如果谁使用过最早在DOS系统中使用的WPS文字处理软件的话,就会更加容易理解DOC文件的构成了。



====================================================

以上的解释是否能说明这些概念。



如果对这些概念理解的话,很多问题就可以弄的非常清楚。



如对这样的一个问题:

在一个C的源程序文件中,有A=1234;这样的语句。那么该语句在源文件中占几个字节?这几个字节的内容是什么?当C编译器对这条语句编译后,会产生什么样的指令(假定A分配在RAM中,以8086或AVR的指令表示)。

zjybest 发表于 2007-5-21 22:32:04

A=1234;

加上回车换行应该有10个字节。

41 3D 31 32 33 34 A3 BB 0D 0A

假定A分配在RAM中?分配的方式是局部变量。还是全局变量,

局部变量应该是,

MOV word ptr ,04D2h

X的大小(本质上表示和调用函数时,局部变量与栈顶的徧移)由这个函数有多少局部变量决定。一般来说所有参数压栈完毕(按照调用协议STDCALL PASCALL CDCALL),然后CALL函数的首地址时,会生成这样代码.

被调用函数:

test_proc proc far

   push bp

   move bp,sp

   sub sp ,xx;xx为分配本函数所有局部变量的占据空间总和,在栈中分配空间,同时可以看到未初使化

   MOV word ptr ,04D2h   ;初使化变量(假设为X为A变量的偏移)





而全局变量就是一句话mov word ptr ,04D2h ;a_address 编译连接好后,在符号表中就有记载。


-----此内容被zjybest于2007-05-21,22:33:16编辑过

machao 发表于 2007-5-22 10:33:25

正确如下:



语句 A=1234;加上回车换行应该有9个字节。

41 3D 31 32 33 34 3B 0D 0A (C语言的语句必须为纯ASCII码,包括分号。)



假定A是全局变量,在8086的系统中通常被编译成如下指令:

mov word ptr ,04D2h ;a_address是变量A在数据段中被分配存储单元的偏移地址。

coosir 发表于 2007-5-22 10:50:00

讨论很激烈啊,也来凑凑热闹

严格地说,“HTML本质上是纯文本文件”是不恰当的

这一点同意3楼,应该是“文本文件”

HTML和其他运用于网页的动态脚本文件一般都可以多种编码,所以应用上来说,比如国内很多采用gb2312,gbk,utf-8等编码方式,用于中文显示,并非纯ASCII码

呵呵~
-----此内容被coosir于2007-05-22,10:58:04编辑过

machao 发表于 2007-5-22 11:35:30

为了讨论问题的简单,我已经设定了在纯英文环境下讨论了。



如果没有这个限定,文本文件无法严格的定义。



例如,在我们的计算机系统上看到的含中文字符HTML文件,你可以认为它是文本文件。但在欧洲人的计算机系统上它就不是“文本文件”了,因为他们的计算机系统不安装支持中文的编码系统。



如果你一定要认为它是文本文件的话,需要加上这样的限定:该文件的显示内容部分可以由非ASCII码构成,但标记和标记中的内容必须由纯ASCII构成。

jeff_4 发表于 2007-5-22 23:31:56

马老师讲的透彻!学到了!

踏踏实实的学才行。

coosir 发表于 2007-5-24 12:27:24

嗯,果然严谨细致。

咱就先学学这种治学的风格

felixch 发表于 2007-8-16 14:09:47

凑个热闹,7位AD采样,用byte保存的数据算文本文件吗?

mtxmxt 发表于 2007-8-17 16:00:58

读了马潮老师的文章后弄清了很多概念,有收获。

lisasa 发表于 2007-11-12 00:24:49

关于“什么是纯文本文件“的思考

别忘了,还有扩展ASC码,是指128~255之间的字符,大部分是制表符。

我认为,每个字节代表一个ASC码并用于显示的文件都是纯文本文件。
每个字节都表示用于显示ASC码,而不是用于当成转义码。

转义码是指一个或一组ASC码用于表示控制符或描述符。如代表某种字体或颜色等。

中文是用两个扩展ASC码代表一个字。在英文单字节系统内,一个中文字显示成两个英文制表符。如果当成2个制表符,则还是纯文本;如果当成一个中文字,则因为有转义了,所以只能算文本文件,不能算纯文本文件,这就是中文标点符号和英文标点符号的区别。



以上纯属个人见解。

favr 发表于 2007-11-12 02:00:52

还是很糊涂呀。
1、简单地说,“纯文本文件”就是可直接从键盘输入的字符保存成的文件,要说到具体编码的话就很长了,“纯文本”就是这个意思。
2、文本文件就要复杂一点,基本就是:可通过键盘输入,包括通过转义后的文本,但不应该包含格式;典型的就是中文输入,通过IME程序把键盘输入解释、影射成对应的中文编码(GB2312只是比较流行的一种,现在都是强制的GB18030,变长的,向下兼容GB2312)。也有定义文本文件为可印(printable)文件,要包含其他印不出来格式字符的就不大算了(当然,回车、换行、制表、文件结束这几个字符还要算进去),我不知再再简单该怎么说……。
3、DOC文件(MS Word)是一种专有格式文件,是Word或其兼容软件用于保存文档(Document)内容的文件,不算文本文件;HTML当然是非常标准的文本文件,文件本身没有格式,其“格式”是通过文本定义的,不同的解释应用程序有不同解释方法,显示或打印就会有差别。DOC、PDF、BMP等格式文件的格式是使用某种专有规则定义的,内容不仅仅是“文本”,还包含非文本。
4、相同点都是文件,不同点就是他们不一样,因为他们不是一个东西,例如苍蝇和人,都是生物,都是动物,都要吃东西,但就别让苍蝇和人一起比,因为根本就不一样(其实差别很小,看你和谁比,例如石头和人比,苍蝇就更像人或人更像苍蝇,对吧?)。
5、这或许是比较牛的问题,不过没有限定条件就没有“标准”答案了,在字符界面和图形界面上的处理方式是不一样的,不同OS对字符/字节的解释也有少少差别,例如回车(0D)换行(0A),有些系统有回车就换行,而有的系统回车根本就不换行……。估计标准答案都有误人之嫌。
6、扩展名当然是可以任意改变的。扩展名只是一种助记号,例如一个.txt扩展名的文件很容易让人理解它为文本文件,这对于组织和管理文件时很有帮助,但一个.txt扩展名是不能改变文件具体内容的,例如你把一个位图文件的扩展名改为.txt并不会修改位图文件本身,只是名称改了而已,特别在类unix系统上,操作系统是不太认扩展名的,只看文件属性,当然,“人性化”一点,也可以象Windows一样把文件和处理软件关联起来,在图形操作界面上用鼠标点击——处理。扩展名是个名称,改了可能会引起人或软件“视觉”上的错觉,仅此而已。

如果你只用Windows的软件来做一些PC的事情,对底层的东西了解少不奇怪,MS就要达到这个目标,所以她是成功的;但对搞单片机的人应该好理解,文件的实质就是:OS按某种规则保存在不可挥发介质上的字节集。
OK?

shark 发表于 2007-11-12 03:00:23

咬文嚼字的讨论,文件不是过是字节数据的载体,具体理解成什么只有定义这个文件的人才有发言权.

----"只要构成文件内容的每一个字节的高位都是另的话,这个文件就是纯文本文件!! "
我用7bit的AD采集的每一个字节最高位都是0,存成的数据文件难道是纯文本文件?
难道你要把二进制的AD值当成ASCII码来看?

john78 发表于 2007-11-12 08:29:54

我也说两句

1现在也没有什么象样的教材,计算机学的"好"的,在学校也就是凭兴趣这边学一点,那边了解一点.工作了也就要用什么学什么,都没有系统
再看看现在"学好的"也不都是计算机专业的.所以知识零散的那是肯定的,顺便说一点,不同人翻译的国外的书,的术语也不完全一致.当然...

马老师,你也别生气,希望你能出些更系统的,更完整的教材.

个人观点(我也就能做些"项目",但我确实回答不全您上面的问题).

studentever 发表于 2007-12-13 11:42:21

.

frozenstar 发表于 2007-12-14 12:57:39

学了不少。。。。。。。。。。。东西。

yarak_ma 发表于 2007-12-28 14:13:09

关键是知道什么是文本。
纯文本就是除了文本没有别的东西。
文本包括各国的语言文字,还有一些特定ASCII控制码。
由Unicode组成的文件也可以是纯文本文件。

计算机技术在发展,这个概念也在扩展。非要限定什么范围,什么概念,其实出发点就是错误的。

Gorgon_Meducer 发表于 2008-3-28 21:56:26

这个问题很有意思。

什么是文本文件?
记得UCDOS环境下的WPS么?
打开菜单以后,至少有两个有趣的选项:
   打开文本文件
   打开非文本文件
可惜快捷键已经记不住了。
在DOS下,如果要显示中文,必须使VGA工作于图形模式下(使用某个BIOS中断)。
同样在DOS下,区别文本模式和图形模式非常简单,如果光标是短线,一定是文本模式;如果光标是方块,那么毫无疑问是图形模式了。根据这一条,你会发现,其实WPS一直工作于图形模式下。

从DOS3.1的视角来看,含有中文字符和Unicode的所谓文本文件都不算文本文件。
一个文本文件只能含有ASCII码中可以显示的字符(不包含前32个除去回车和换行符的部分),也不包含最后128个。甚至,Linux和Dos在某些地方都有不同的规定,关键就集中在回车和换行两个符号的问题上。
文本文件是相当严格的,当你使用copy con +文件名 的方式生成的文件,都可以算是文本文件,前提是你不会按住Alt+小数字键盘。
文本文件中绝对不会在文中含有ESC(27),这是所谓的结束符,在DOS下,你用Type语句看一个文件时,如果遇到ESC符号,就会中断显示操作,这也是当年一个比较流行的隐藏文件内容的技巧(哎……这些技巧都是老古董了……),真不知道还有多少人知道Alt+255在DOS下插入伪空格防止别人进入某个目录的技巧……
    不知道有多少人在意过为什么 利用Copy 函数进行文件连接时需要一个/b的参数,这个参数的作用就是连接二进制文件。
    呵呵,绕了半天,终于说出来了,所谓文本文件,就是相对二进制文件来说的……
    除了文本文件,都是二进制文件……
    DOC是一个二进制文件。

至于显示文本文件,西文系统下,是可以通过BIOS中断或者DOS中断直接实现的。对于所谓中文文本的显示,就必须借助图形模式,利用点阵绘图的方式来实现了,记得当年UCDOS很好的解决了所谓全角字符和半角字符的问题让人不再对UCDOS下打开TT时那尴尬的汉字边框感到无奈是多么欢欣鼓舞的意见事情。

本来一切都是简单而美好的。DOC和其他所有非文本文件一样都是一串二进制流,只不过,根据不同的操作系统有了不同的定义,例如COM文件和EXE的区别。然而,win3.1来了……方正中文win3.2来了……Win95来了……

    于是,开始有了HTML,一个很好很强大的东西,反正,那时候,随便建立一个TXT,然后写入<HEAD><BODY></BODY></HEAD>就会显示神奇的东西,前提是你要ren一下……扩展名真是一个假牙的东西……只能骗骗菜鸟……就是现在我也很喜欢把很多东西看作文本文件,比如ICC的工程文件.prj,只不过是一个文本文件而已……

    突发奇想,谁还记得通配符的使用方法?留给楼下了。

dellric 发表于 2008-3-29 00:49:43

问题讨论复杂化了

文本文件的定义:
在计算机文件系统中"主要功能"是用于存储文字编码信息的文件叫文本文件.信息必须包括:文字存储(哪种编码不论),其他辅助信息包括:文字图表显示控制,打印脚本,多媒体信息等

纯文本文件的定义为:
在计算机文件系统中"只"是用于存储文字编码信息的文件叫纯文本文件,它只包含了文字编码,而不包括文字控制信息和其他媒体信息.

huanghb 发表于 2008-3-29 08:58:04

对傻孩子(根本就不傻!)的文章非常敬佩。
我认为文本文件的定义的事,一定要引经据典。(随便聊聊也可以)
好像真的引经据典的话,可能会互相矛盾。呵呵!如果由一般的大师来个定义,也不妥。尤其千万不要来考我,因为本来就没有一个确定的定义,是吧?也许我错了,呵呵。
那么我的观点是什么呢?
别一本真经的,就随便聊聊,增加点知识就可以了。

xhicq 发表于 2008-3-29 10:38:45

自已试一下,其实看过马老师的回答了,呵呵
1。什么是纯文本文件?
   内容为 英文,数字,英文符号 ,以0D0A换行,文件结束符忘了 :)
2。什么是文本文件?
   为容为ASCII码,可能出现英文制表符号等(或者说ASCII码高于128的),行以0D0A结束,并且除了文件最后的结束符外,不包函其它的控制符
3。文本文件和DOC文件(WORD的缺省格式文件)以及HTML文件有何区别?
   DOC文件可以认为是数据,里面可能存在所有的ASCII,并且不能直接显示出文件内容
   HTML文件可以理解为文本文件,或纯文本文件(英文)
4。DOC文件与HTML文件有什么相同之处和不同之处?
   我认为没有什么可比性,呵呵   用处不同,功能不同,结构不同,从大处比较没什么意义
5。在屏幕上显示文本文件的内容需要经过那些转换?
   设定在DOS下VGA显示模式
   因为DOS下显示是直接从行首显示,就算有TAB符,也是从行首
   A。行大于80个显示位,换行
   A。行不大于80,并且行尾有结束符,换行
   其中如果有汉字(或中文制表符)的话,取一个汉字的区位码,得到相应的字模,送入显示缓冲区。(在汉字系统图型模式下)
6。文件的扩展名可以任意改变吗?扩展名有那些作用?
   扩展名可以任意的去改(前提,只是扩展名,不管其相关的打开方式,如DOS下,把一个扩展名为A。EXE的文件改为A。ABC 那么此文件将不可执行(改操作系统的扩展名定义不算)
   扩展名的做用就是文件分类
   


引用 Gorgon Meducer 傻孩子的话
突发奇想,谁还记得通配符的使用方法?留给楼下了。
DOS下的?
通配符为 *和?
如果用在文件名中*可以代表全部文件名 ?可以代表一位,在扩展名中同样
如 *。*为所有文件
   A*。EXE 为所有A开头的执行文件
   AB?。TXT 所有以AB开头并且是三位文件名的 TXT类型文件

holycat 发表于 2008-4-20 10:52:21

呵呵,17楼大鲨鱼的跟帖似有些玩世不恭,不过我觉得他/她/它还真说到点子上了:具体理解成什么只有定义这个文件的人才有发言权。
假如,碰巧了,一组记录在文件里的0/1信息流,被某老外用记事本打开时窗口上显示“oh, my god.”,老外立刻反应:那是个文本文件嘛!
老外猜对了吗?也许对,也许,那做文件的急了:俺累个半死测的一组A/D值,被丫念成“哦卖糕的”?

实用技术上的好些词汇跟学术不同,并非始于严格的定义。先做的人不但赚了钱,还理所当然地取得了冠名权。后来的人呢?只好一边学一边小心翼翼地避绕矛盾完善定义,给前人擦P股,呵呵,没法太认真。

shark 发表于 2008-4-20 13:03:26

“不过我觉得他/她/它还真说到点子上了”,竟然还有“它”,如果你不是人身攻击就是小学语文没学好。

holycat 发表于 2008-4-20 13:33:38

oo........楼上表太介意,俺是开开玩笑的,再说“它”是给你的图标用的,不算错吧?何况上帝也用这个字呢。

canjany 发表于 2008-4-29 14:03:41

看你们这么争论,我不知道我的未来在哪里.

zswlb 发表于 2008-10-25 16:53:22

可以简单地说,字符文件就是文本文件。英文字符是以ASCII编码,而中文即使以国标编码。当然现在字符编码的方法多了如有UTF-8等。图形文件,

二进制文件如程序代码的文件就不是文本文件。文本文件的概念已经不在局限于ASCII编码。

就今天的理解,我以为:以编码的方式表示储存字符的文件就是文本文件。

7908 发表于 2008-11-9 10:44:30

“纯文本文件”的定义很简单,对于ASCII文件讲符合下面两个条件就是纯文本文件:

1)只包含可显示的ASCII字符

在C语言环境下,可显示的字符可以很方便地用isprint()判断。

.txt文件就是“只包含可显示的ASCII字符”,但.htm文件、.hex文件也是“只包含可显示的ASCII字符”,所以需要下面一条界定。



2)所有的字串都没有任何格式信息

.htm文件中的所有标记(&lt;tag>)就属于所谓“格式信息”,所以.htm文件不是纯文本文件;同样.hex文件也包含了与人类语言无关的格式信息,所以.hex文件也不是纯文本文件。

cyberkt 发表于 2008-11-9 11:23:38

学习一下

sol84 发表于 2008-11-9 12:57:24

学习,还真不会回答

20075154 发表于 2008-12-2 20:47:05

看了哈

还是一头雾水



就有了个大概了解

佩服楼上那些NB

lileistone 发表于 2008-12-18 15:51:13

我突然有这么个想法,就是,能用记事本打开,阅读、编辑,不出乱码的,可以叫做文本文件;

而需要外部程序解释的,是非文本文件,也就是二进制文件。



按这个解释,c和txt都是文本文件,doc不是,因为它需要word来解释显示。

以上概念,纯属个人胡诌,不严谨,欢迎拍砖

machao 发表于 2008-12-18 23:14:19

一个TXT文件,里面有中文字。在中文支持的系统下,用记事本打开,阅读、编辑都没问题。



但你在纯英文的系统下,用记事本打开后是什么情况?这时还算不算文本文件?

favr 发表于 2008-12-19 00:47:41

17楼,26楼对文件的理解还是比较深刻的,至于楼主提的问题和给的答案,以及后面的回帖看,还是……深度和广度都不够。



文件、文本文件、纯文本文件、格式文件、数据流记录……可以归结为科学问题,也可以归结为哲学问题。

在学校里,师生们希望所有问题都有一个确切答案,而且是一个唯一正确的答案,但人类对自然和自我的认识毕竟是非常有限的——不管你承认不承认;所谓“正确答案”也只是人类对所认知的问题一个自认为合理的解释而已。

——当然,也不能虚无化了。

lileistone 发表于 2008-12-19 01:32:40

那我补充一下,因为编码导致显示乱的,暂时不算在内……



我这有点矫情了,呵呵,只是想找个通俗简单的解释

cddx 发表于 2008-12-19 02:34:23

看到大家的讨论,我只感到老师难当啊!

一个老师的收费标准

1)简单问题,收费1美元。

2)复杂问题,10美元。

3)愚蠢问题,100美元。

4)一个使我显得愚蠢的愚蠢问题,10000美元

你问的是什么问题呢?

usecool 发表于 2008-12-19 11:43:16

有些讨论和思考是没有意义的。

flyerhacker 发表于 2009-3-10 16:11:29

学习一下

hsztc 发表于 2009-5-6 20:43:22

扩展名在某种意义上还是很有用的,谁知道这是什么文件ourdev_442609.rar(文件大小:11K) (原文件名:<font color=red>aaa.rar)</font>

windy__xp 发表于 2009-5-6 21:07:24

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_442616.jpg
(原文件名:aaa.jpg)


----------------------------------------------------------
    42楼还真无聊。

bigluo 发表于 2009-5-6 21:20:56

文本文件本来只是一个定义而已,不同的角度,定义的内容会有不同的。
最好参考一下WIKI的定义吧:
en.wikipedia.org/wiki/Text_file

A text file (sometimes spelled "textfile": an old alternate name is "flatfile") is a kind of computer file that is structured as a sequence of lines. A text file exists within a computer file system. The end of a text file is often denoted by placing one or more special characters, known as an end-of-file marker, after the last line in a text file.

"Text file" refers to a type of container, while plain text refers to a type of content. Text files can contain plain text, but they are not limited to such.

At a generic level of description, there are two kinds of computer files: text files and binary files.

hsztc 发表于 2009-5-7 02:33:47

哈哈厉害啊,确实无聊,不过用来骗一般人够了,这只是示范,多弄几级我自己都还原不了了

windy__xp 发表于 2009-5-7 12:45:14

【45楼】 hsztc

积分:76
派别:
等级:------
来自:
哈哈厉害啊,确实无聊,不过用来骗一般人够了,这只是示范,多弄几级我自己都还原不了了
 
-------------------------------------------------------------------------------
   不加密,就算1W级也没用。

zxwr7282 发表于 2009-6-13 10:54:22

一知半解,以后多回来看看,欣赏"仙猫"的他,她,它, 不欣赏大鲨鱼没情调.哈哈 我当时看就知道什么意思

haiwuya2 发表于 2009-6-15 13:27:14

我不是学文科的,但我见到文科的学生都先让他们背岳阳楼记,醉翁亭记,滕王阁序。背不下来的也算文科的?我都会。
我不是学化学的,但我见到材料的学生都先让他们背化学元素周期表,重点是稀有元素部分。背不下来的也算学过化学?我都会。

backup 发表于 2009-8-23 07:44:13

有些概念是需要用户个人经过N年的积累、沉淀后方能自我理解的。
否则即使你给他解释,由于涉及到的内容过于复杂,超出了他现在的理解水平,他也听不懂。

leonliu_1128 发表于 2010-8-13 14:37:14

想了解的话用ultraedit或winhex打开就明白了,TXT里除了里面的字符没有其他的东西.用单片机可以直接读取不用管什么头.最好看一遍FAT,我也是看一遍后懂了一些.

lyk07351 发表于 2010-8-21 15:42:50

马老师提的问题就是有深度,看马老师的书才是真正的享受!
我也是学电子的,可是对这个还真是一知半解,我只勉强算是会用电脑罢了!

jj10200410 发表于 2010-8-21 16:49:02

-----------------------------------------------------------------------
我最后看到了一个叫做回复【46楼】windy__xp 龙笑
-----------------------------------------------------------------------

哈哈,最后我看到了一个aaa.JFIF的文件……

kupica 发表于 2010-9-23 19:20:40

茴香豆的“茴”字有六种写法,你知道么?

1243562828 发表于 2010-11-27 14:56:16

真是恶搞

liuft 发表于 2010-11-27 16:37:54

42楼的方法只能在Win下闹闹,如果在linux什么都不用做下立马现出原形,因为linux不是根据扩展名而是根据文件头来识别文件类型的,这个感觉比MS先进不少。

xuxi2009 发表于 2010-11-27 17:43:39

以后就拿着个问题去问人,呵呵

CoolBird007 发表于 2010-11-27 17:47:38

呵呵,据我的理解,文科和本科都用的文件叫做文本文件。。

hemjidn 发表于 2010-11-27 20:39:14

呵有深度。在我看来使用ascii编码的文件就是纯文本文件使用html规范的文件就是html文件……结论就是使用了某某编码格式的文件就是某某文件。

sangreal 发表于 2011-9-4 15:55:07

mark

gaplee 发表于 2011-9-8 22:30:11

文件的各种类型都是人为定的,计算机里所有的东西都是一串01,长短不同罢了,就因为0、1可以演化出来的东西是无穷无尽的,所以人们根据符合人类的习惯定义一些标准,像用ascii码表示字符、符号,像用数值大小定义颜色的变化。所以说你只要懂得文件的基本单元都是0、1就够了,本质是这样任他雨大风吹千变万化都可以运用自如。

imjacob 发表于 2011-9-9 09:11:21

这个讨论很有意义,顶一下

cbeeee 发表于 2011-9-9 09:31:42

回复【55楼】liuft
42楼的方法只能在win下闹闹,如果在linux什么都不用做下立马现出原形,因为linux不是根据扩展名而是根据文件头来识别文件类型的,这个感觉比ms先进不少。
-----------------------------------------------------------------------

文件头和扩展名跳出各自的操作系统来看又有什么区别呢?
原来是个坟……

现在Unicode编码那样的文本也算纯文本应该没有疑问了吧?

Razor 发表于 2011-10-23 00:48:30

对于一个文件,是用文件的存储的数据还是文件的存储的结构来区分?

monkerman 发表于 2011-11-5 22:41:27

只用ASC II码的就是纯文本, 因为计算机文字终端能显示, 其他有字体大小格式神马的, 就不是了, 我是这么认为的

imliyucai 发表于 2012-2-13 19:39:10

文件应该分为文本文件和可执行文件两类。
象DOC,HTML之类,以及图像格式文件等都可以算作文本文件。文本文件是用来看的。
可执行文件就是EXE,COM之类。它们是用来被CPU执行的。可执行文件也就是程序。
但归根结底,文件只是字节的集合。
所以,文本文件与可执行文件也没有本质区别。不如说,文本文件是给人看的,可执行文件是给CPU看的。

x9fish 发表于 2012-2-13 20:19:57

只有ascii可显示文本才是纯文本,这说法有2个问题:
1。ascii也只是一种编码方式,为什么其它更新的编码就不行,眼光别老停在dos时代
2。换行符,回车算不算纯文本一部分?

没看回帖我想的答案是:
不包含格式信息的某种编码的内容可阅读的二进制磁盘文件
好像也不大严谨,问题在于换行符也是格式信息。

leizisdu 发表于 2012-2-16 10:07:30

谢谢马潮老师的讲解:)

Yawgmoth 发表于 2014-3-21 16:50:34

本帖最后由 Yawgmoth 于 2014-3-21 16:54 编辑

我对纯文本文件的理解 就是可以用文本浏览器正确解释的文件
简单举例来说记事本打开什么的文件都成 但是能正确被解释的 只有.txt .c .h这类的
虽然确实都是用ascii编的 但是不代表ascii编的都是 比如你用记事本打开一个midi文件
你确实看到了文件头和文件内部的数据 但是正确的打开midi文件 显示的则不是这些玩意
而是某种谱图 或者声音
每种文件都有解释的引擎 能正确解释文本 就应该叫做纯文本 至于是只能解释ascii还是只能解释gb
无所谓了

Yawgmoth 发表于 2014-3-21 16:52:48

machao 发表于 2007-5-22 10:33
正确如下:



语句 A=1234;加上回车换行应该有9个字节。



另外 machao老师 我在找你用双pwm实现高位dac的帖子 找不见啦

电气之光 发表于 2014-3-21 21:17:19

本帖最后由 电气之光 于 2014-3-21 21:19 编辑

"纯文本“应理解为一个数据解析协议,是一种约定,
在WIN系统里,通过文件名尾“.txt"来宣告文件中字节流与其要表达的意思之间应通过“纯文本”这一协议来解析,
“记事本”软件是WIN系统里最常用的“纯文本”这一协议的解析软件,
所以,通常当一个文件通过".txt"来对外宣告“我是纯文本文件,应按纯文本来解析,您才能获得我本来要表达的信息“,
WIN系统就会启动记事本软件来解析,并把正确的信息打印输出在屏幕上。
”纯文本“协议不是一个单一的协议,只能说它与ASCII,ANSI,Unicode等编码协议间有着一些简单的转换关系,
在不同的国家,在显示输出时还要经过GBXX或某BXX的转换。
对于ANSI编码的文本文件而言,“纯文本”就是文件储存单元字节中,0~128表示ASCII表的信息,解析时应将相应的信息符号打印在屏幕上,比如字节“&H41"将会直接在屏幕上打印出“A”,
当遇到值大于128的字节将表示接下来的一个字节将与该字节组合一起来代表一个非ASCII的符号,也就是某国的文字什么的,接下来系统就会去找GBXX什么的来处理了。
{:lol:}仅当参考
页: [1]
查看完整版本: 关于“什么是纯文本文件”的思考