文本文件

PostgreSQL数据类型-二进制数据和字符串数据类型与字符串函数

巧了我就是萌 提交于 2020-02-29 12:35:05
PostgreSQL支持3种字符串类型,分别是character varying(n)、character(n)和text,character varying(n)可以写成varchar(n),character(n)可以写成char(n),最大长度1GB,text最大长度无限制。n是实际字符数量。 大部分情况下,推荐使用text和varchar(n)。 PostgreSQL支持一种二进制类型bytea。 二进制数据有图片(JPG、PNG等)、音乐(MP3、WMA等)格式文件,和字符串文件区别在于文本文件需要复合文件编码和储存可见字符,二进制文件没有类似限制,字符串适合储存文本文件。 ---字符串练习 postgres=# create table testtext(testtext char(2),testvarchar varchar(3), testchar text); CREATE TABLE postgres=# postgres=# postgres=# insert into testtext values('1','111','111'),('0','000','011777'); INSERT 0 2 postgres=# select * from testtext; testtext | testvarchar | testchar ----------+-

fopen参数@windows和linux的区别

ぐ巨炮叔叔 提交于 2020-02-29 08:16:54
作为文件的数据,在计算机中都是以二进制的形式存储的。 因此,对于文本文件和二进制文件的区分,不是在物理上的,而是在逻辑上的。 在开发时,遇到一个小问题,代码在linux下运行读写文件正常,而在windowns下读写文件出现异常。 【现象】 在linux中使用fopen第2个参数为"r"或"w"打开二进制文件后读写没有任何问题,但将代码移到windows后,读写却出现了异常。将参数改成"rb"和"wb"后,读写正常。 【原因】 在学习C语言文件操作后,我们知道打开文件的函数是fopen,也知道它的第二个参数mode是标志字符串。其中,如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。 具体如下: 'r' 只读方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。 'r+' 读写方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'x' 创建并以写入方式打开,将文件指针指向文件头

确定文本文件的编码——乱码探源(2)

孤人 提交于 2019-11-28 14:39:34
在上一篇中,探讨了文件名编码以及非文本文件中的文本内容的编码,在这里,将介绍更为重要的文本文件的编码。 混乱的现状 设想一下,如果在保存文本文件时,也同时把所使用的编码的信息也保存在文件内容里,那么,在再次读取时,确定所使用的编码就容易多了。 很多的非文本文件比如图片文件通常会在文件的头部加上所谓的“magic number(魔法数字)”来作为一种标识。所谓的“magic number”,其实它就是一个或几个固定的字节构成的固定值,用于标识文件的种类(类似于签名)。比如bmp文件通常会以“42 4D”两字节开头。 又比如Java的class文件,则是以四字节的“ca fe ba be”打头。(咖啡宝贝?) 即便没有文件后缀名,根据这些信息也是确定一个文件类型的手段。 附:关于用Notepad++查看十六进制的问题,这是一个插件,如果没有装,菜单--插件--plugin manager--available--HEX-Editor,装上它。装上后,它通常在工具栏的最右边,一个黑色的大写的斜体的“H”就是它。单击它可以在正常文本与16进制间切换。要进一步查看二进制,在文本区,右键--view in--to binary。 没有编码信息 那么,对于文本文件,有没有这样的好事呢?可以简单建立一个文本文件“foo.txt”,里面输入两个简单的字符,比如“hi”,保存,然后再查看文件的大小属性