本质啊本质之五:字符编码的本质

原创 2007年10月10日 23:40:00

字符编码有好多种,平时容易见到的如:ASCIIgb2312gbkUnicode

 所谓字符编码就是对人类的文字符号进行编号(因为计算机里一切都是数字),如“B”“6”

 吃透这个概念要注意:

1.       在计算机内部,一切的一切都是纯而又纯的高低电位代表的数字,没有任何其他的东西。

 

2.       我们在电脑上看到的字符(小画片),如:,其实是电脑帮我们画出来的位图,他在计算机内部是16进制数字 BABA 。(gb2312

 

3.    电脑显示一个字符过程如下( for windows )

步骤1:文字首先以某种编码保存在文件中。

步骤2Windows将文件中的文字编码映射到Unicode。(通过codepage

步骤3Windows按照Unicode在字体文件中查找字体图像,画到窗口上。

 

4.       计算机中同一个数字,在不同的编码规则里,表示的是不同的符号,当一堆big5编码被当做系统缺省编码gbk来处理转换时,就得到了一堆没有意义的符号:乱码。需要指出的是:对人来说虽是乱码,但于计算机来说则操作上没有任何变化,都是转换,查表,画图。由上可鉴, Unicode 是十分必须的。在 Unicode 编码规则里,世界上所有文字都对应着一个独立的数字,不用再担心不同的编码规则导致的转换错误了。

 

5.       编码规则对编译器影响很大。因为编译器实质上就是把一个源文件的字符的二进制流转换成目标文件的机器指令二进制流。那么不同的编码规则规定的一个字符对应的二进制数是不同的,如ASCII 里所有字符占1个字节, “a”这个字符对应的是一个字节 0x61 , 那么编译器的词法分析器通过每次读一个字节这个动作就可以把一个个字符读进内存,然后通过与 数字0x61比较(别忘了在计算机内部一切都是数字)得出这个字符是否是我们人类认为的“a”。但如果源文件使用的是Unicode编码的话,所有的字符都占了2个字节,字符“a”对应着数字 0x0061 ,那么原先那个编译器的词法分析器再一次读进一个字节进行分析就不行了。所以一个新型的完全支持Unicode 的编译器,他肯定是按 Unicode 编码这一套而非 ASCII 编码那一套来进行词法分析的。

 

6.      最后再强调一下:内存中一样的二进制码,通过不同的编码规则,转换,查字体,得出不同的字符(图片),我们人类可以看出哪些是乱码,哪些是正常的,计算机不能,所以乱码这个概念是我们人类才有的。计算机内一样的东西,乱不乱码只是人类的感觉。

 

 

 

好文分享 线性代数的本质

本文转载自微头条,作者游皓麟  http://www.wtoutiao.com/p/l53Eqf.html 线性代数的本质 游皓麟 · 2015-07-05 21:48 编者按...
  • tigerda
  • tigerda
  • 2016-06-17 15:40:56
  • 1387

本质矩阵

本质矩阵
  • supersonic2023
  • supersonic2023
  • 2017-02-14 17:16:13
  • 581

基于opencv3的本质矩阵(essential matrix)估计算例

至今opencv3面世快两年了,五一期间抽空看了下新增的几个关于双目视觉标定算法的使用。 关于双目的标定有一类方法是基于本质矩阵(Essential matrix)的标定方法,本质方程与基础...
  • J10527
  • J10527
  • 2016-05-02 08:58:25
  • 6801

让我们一起来看看计算的本质吧!

我们如何理解计算?如何理解程序?如何认识lambda演算?探索很多人费解的Y combinator...
  • theprinceofelf
  • theprinceofelf
  • 2013-12-12 20:22:27
  • 3768

Android系统本质

操作系统的本质=系统内核+文件系统(ext3、ext4) Linux系统的本质是:Linux系统内核+文件系统(ext3,、ext4) Android系统的本质是:Linux内核+文件系统(ext...
  • s1244879237
  • s1244879237
  • 2017-02-17 11:35:00
  • 173

for循环本质

菜鸟:为什么在for循环里重复定义变量不会报错? 如下代码1,因为重复定义了两个变量 a ,编译器报错。 void main() { int a; int a; return; } 如下代码2,用...
  • u011555996
  • u011555996
  • 2016-11-16 20:07:42
  • 394

Tomcat的本质

tomcat是一种web服务器,也可以称作运行在服务器(物理意义上的计算机)上的一种软件包。用来对服务器上的HTML文档提供访问权限控制。        以上的说法可能太专业化,一时难以理解。其实用...
  • shenlin2011
  • shenlin2011
  • 2014-06-29 12:45:25
  • 1511

线性代数的本质(Essense Of Linear Algebra)[1]

线性代数的本质(Essense Of Linear Algebra)[1]最近学习了B站上一个关于线性代数的视频Essense Of Linear Algebra,主要从几何方面去讲解,非常形象和容易...
  • wenzhunpu
  • wenzhunpu
  • 2017-09-06 21:21:19
  • 932

微积分的本质

数学可以作为自然科学的理想工具,在于这种工具可以较方便定量的处理自然界的问题。其中一些自然界的问题,常量数学是处理不了的,非用微积分不可。可是为什么常量数学不行,微积分就可以呢?多数人是回答不了的,就...
  • zjjhns
  • zjjhns
  • 2013-09-03 16:47:22
  • 2083

lambda表达式的本质

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • wangpeng2011314
  • wangpeng2011314
  • 2017-02-26 20:50:48
  • 439
收藏助手
不良信息举报
您举报文章:本质啊本质之五:字符编码的本质
举报原因:
原因补充:

(最多只允许输入30个字)