何为字符编码(名词):
计算机中的任何信息它们都以0和1的方式存入计算机并得以处理,这些信息用哪些二进制数字来表示了,就需要一套规则,
这套规则就是字符编码(Character Code),比如,同样一个字母'A',每种规范里面的表达存储方式不一样,ASCII是001,GB2312是002,
以下都是它的规则,如:ASCII编码表、GB2312编码表、GBK编码(即“国G标B”、“扩K展”前三个汉字的汉语拼音的第一个字母)、GB18030、Unicode编码、UTF-8编码等等(理解为一个国家或一个地区的语言包)
为什么需要知道字符编码:
在显示器上看见的文字、图片等信息在电脑里面其实并不是我们看见的样子,即使 你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化;凸起的地方代表数字1,凹的地方代表数字0。 硬盘只能用0和1来表示所有文字、图片等信息。
那么字母”A”在硬盘上是如何存储的呢?可能小张计算机存储字母”A”是1100001,而小王存储字母”A”是11000010,这样双方交换信息时就会误解。比如小张把1100001发送给小王,小王并不认为1100001是字母”A”,可能认为这是 字母”X”,于是小王在用记事本访问存储在硬盘上的1100001时,在屏幕上 显示的就是字母”X”。也就是说,小张和小王使用了不同的编码表。小张用的编码表是ASCII,ASCII编码表把26个字母都一一的对应到2进制1和0 上;小王用的编码表可能是EBCDIC,只不过EBCDIC编码与ASCII编码中的字母和01的对应关系不同。
在发送数据给对方前,需要事先告知对方自己所使用的编码,或者通过转码,使不同编码方案的两个系统可沟通自如。(其实发过来的都是0101010,对方告知所使用的编码规范(假如是ASCII编码),就使用ASCII编码表找到对应所表达的字符,再将字符通过EBCDIC编码表找到对应的编码,然后才能得到本机正常情况下的字符)
这就解释了乱码的原因:010101在你那里代表正常的字符,你那边编码规范是ASCII编码,到我这边来编码规范是GB2312,编码表变了,010101代表什么西方字符或者问号等等,于是乱码文件就产生了 |
|