理解计算机中的编码问题

小生博客:http://xsboke.blog.51cto.com

                    -------谢谢您的参考,如有疑问,欢迎交流

相信计算机系统编码问题,让很多人都头疼,而且大家经常因为编码问题而出现各种各样的烦恼,那么我也一样,在这里,我将自己的理解写出来,大家可以参考参考,如果有异议的地方,大家也可以交流一下.

要解决一件事,首先要知道他的今生来世,我们现在就看看关于计算机编码的今生来世

一、编码最初的形态,以及出现的问题和原因.

# 最初的形态
因为语言问题,最初每个几乎每个国家都有自己的编码比如:
    美国:ASCII 占1个字节,只支持英文
    中国:GB2312 占2个字节,支持6700+汉字
    中国:GBK GB2312的升级版,支持21000+汉字
    日本:Shift-JIS 日本字符
    韩国:ks_c_5601-1987 韩国编码
    泰国:TIS-620 泰国编码

# 产生的问题
这样就产生局限性了,比如你中国的windows系统默认是GBK编码,你在text写了一个"你好",然后把这个text传给了在美国的朋友,
你美国的朋友用美国的计算机打开这个text就会显示乱码.

# 问题产生的原因
原因:硬盘里面存储的都是二进制数0101010101111000类似这种,所以你以什么编码写到硬盘的,读的时候就得用什么编码读.

二、解决编码最初产生的问题.

这时候就出现了万国码unicode,但是因为unicode涵盖了几乎全球所有的文字和二进制的对应关系,所以使用unicode表示一个字符时,
会占用更多的空间,例如:利用unicode表示"gbk"需要6个字节才能表示,比原来ASCII表示增加了1倍,
为了解决这个问题,出现了Unicode Transformation Format,学术名UTF:
        1.   UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个         2.   字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个
        3.   UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
        4.   UTF-32: 使用4个字节表示所有字符;

三、关于转码问题.

由于历史原因,各个国家依然在大量使用自己的编码,这时候因为有了utf,所以我们可以通过编码转换完成语言的正常显示,
一个对应关系,让你更好的理解编码转换:

1. 让以GBK编码的数据在韩国windows系统中正常显示
         中国编码GBK    ->    decode解码为unicode    ->    encode编码成韩国编码

2. 让以韩国编码的数据在中国windows系统中正常显示
         韩国编码    ->    decode解码为unicode    ->    encode编码成GBK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章