`

字符编码

 
阅读更多

所有屏幕上看到的都是0和1 就像有些电影如Matrix 他们的计算机屏幕上都是0和1在闪动 事实上我们如果没有编码看到的也是0和1 只不过按照现在的计算机速度和信息量 可能就不会像电影里刷新的那么慢了

还有一个比喻 大家可能遇到过这种情况 刚下载的电源却看不了 提示不支持此格式 其实有一些智能一点的播放器不管你把扩展名改成.rmvb .mpg .rm .avi .dat .mov .mp4 等等任何一种都能自动播放 因为对播放器来说 它看见的就是一大堆0和1 它的工作就是把他们转换为相应的颜色就好了 然后由这些固定坐标的点上的颜色构成了图片 然后以每秒多少张的刷新率来更换 就能看到连续的电影了

就像这些视频一样 因为有的人需要它小一点 用以节省空间 所以同一电影可能被人弄成很多种格式 一个5分钟的mkv格式的要500M 而一小时的rm格式的有些电影只要几十M 用来满足不同的需求

有的国家的语言只有26个字母 而像中文等语言却有上万的字(还有什么繁体什么的就更多了) 为了节省空间所以就有了不同的编码形式 有时候一个国家都有好几种编码 (现在终于知道秦始皇的伟大了)

但是最不想面对这些的就是程序员了 因为程序员有可能要面对数据库 JVM 页面等等 这其中的字符不断被转换 很容易发生乱码 我也一样讨厌 但是不想逃避 决定好好的理清一下 明其原理

先来说说基本的单位 数据类型

最小的是bit位 就表示一个0或者1 8个bit就组成了byte字节然后

1byte x2^10 =1KB

1KB x 2^10 = 1M

1Mx 2^10 = 1G

1G x 2^10 = 1T

在java里 int 4个字节 -2147483648 ~2147483647

short 2个字节 -32768~32767

long 8个字节-9223372036854775808L~9223372036854775807L

byte1个字节 -128~127

float4个字节 约+(-)3.40282347E+38F

double8个字节 约+(-)1.79769313486231570E+308

char 2个字节 0-65535

unicode

在Java里JVM编译的所有的一切都是unicode包含了各种语言中使用到的所有"字符" 如今还有20000多个空位

其中0~255与ISO-8859-1 一致

相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母'a'为"00 61"。

未完......

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics