理解什么是文本文本是一种由若干行字符构成的信息表达方式。提到文本(也就是我们常说的字符串),不得不说,这是一个艰深的问题。常写代码的童鞋,几乎都曾被莫名的字符串乱码搞的火冒三丈。为什么会出现文本乱码? 答:是因为计算机不认识这个信息,所以不能在屏幕上画出来你认识的文字。为什么我堂堂中华大国的文本,计算机会不认识? 答:计算机键盘只有26个字母+10个数字,所以,理所当然计算机就只认识这几十个字符。谁让电脑是西方人发明的呢!想让电脑认识汉字文本,我们就得通过计算机认识的规则来做某种实现约定的变换,并告知计算机这种变换的规则和对应显示的东东,然后计算机就能认识汉字文本了。这就是所谓的字符编码。所以,想理解什么是文本(字符串),你需要理解以下知识:1、计算机先天就认识的字母+数字,是怎么编码和显示的?2、汉字(或者其他国家的文字)是怎么编码和显示的,常用的编码有多少种?3、这种用来显示人类能够看懂的符号信息(就是通常所说的文本)的编码,在计算机内部是如何存储的,在互联网上又是如何传输的呢?4、不同的操作系统和不同的编程语言版本,其支持的编码种类和编码在计算机内部存储的方式一样吗?5、不同的编码(甚至同一个编码在不同的计算机语言里面)之间如何识别?如何转换?如果你想让计算机显示你需要的信息,就要告诉计算机你打算采用什么种类的编码,并按照编码约定,提供二进制数字给计算机。如果你的计算机能够识别这种编码的话,你就会看到期盼已久的文本了!说明:本文面向初学者简单介绍文本编码知识,如果你希望向专业方向发展,或者想了解更详细的信息,请浏览各编码标准的官方网站。或者参考 /files/doc/ … /char_encoding.html、 /pcxjx/article/details/5375097如何判断CJK汉字,参考 /thread-906973-1-1.html,此贴内容是本文的更详细知识扩展介绍。 此外,本文会略微涉及VB的指针知识,这并不说明本人赞成在VBA中使用指针,涉及指针知识,只是为了更好的说明VBA字符串在内存中的存储格式而已。本贴核心知识点在七、八、九楼。编码转换的参考代码在十二楼~十五楼。 二、ASCII编码ASCII字符集所有在正规院校学习过计算机课程的童鞋,恐怕最早接触的就是这个编码了。这是除了二进制编码以外,在计算机中最为基础的编码。ASCII全称是:American Standard Code for Information Interchange (美国信息交换标准代码)。 标准ASCII字符集使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符(好多是从当年的打字机控制字符中继承过来的)。这个7位的字符集,对应的就是十进制的0~127。ASCII字符集包括标准ASCII字符集和扩展ASCII字符集我们先来看一下ASCII的编码标准字符集(0~127) 在这个标准字符集中,明确规定了只认识二进制的计算机其所存储的数字与字符之间的关系。例如:1000001代表A(十六进制的41/十进制的65)。所以,对计算机而言,如果你想让它显示A,只要告诉计算机显示编码为1000001的字符就行了,也就是告诉计算机显示十进制的65/16进制的41对应的字符即可。ASCII编码,就是用来让计算机能够认识内存中存储的二进制数字与键盘上的26个字母+数字字符之间的关系的最基本的编码!ASCII编码,是大部分计算机系统都支持的编码! ASCII标准使得只含有ASCII字符的文本文件可以在Unix、Macintosh、Microsoft Windows、DOS和其它操作系统之间自由交互,而其它格式的文件是很难做到这一点的。但是要注意的是,在这些操作系统中,换行符并不相同,处理非ASCII字符的方式也不一致。三、ANSI编码(ISO8859、GB2312、Big5、JIS等等)在二楼的介绍中,我们讲解了计算机是如何显示键盘字符的(通常我们称为ASCII字符)。那么,我们伟大的中华民族的汉字多达十万个,常用的也有两三万,这又该如何显示呢?ASCII标准编码只有0~127,扩展编码128~255,完全放不下这么多汉字嘛。莫非,电脑发明的时候,就是给英语国家用的? 是的,你猜对了,最早电脑发明的时候,完全没有考虑这个世界上还会有其他的民族也会用到电脑,而这些民族的字符集会多达数万!有人问了,为什么当年的科学家不考虑地球的其他民族呢?俺猜想,这与当年存储器的容纳能力有关,如果采用一个字节存储英文字符,完全足够了。如果考虑其他民族,就要用两个甚至更多的存储空间来存放英文字符(以便兼容多民族字符),


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/175610.html