字符编码:从 ASCII 到 utf-8

       作为一个程序员, 以前对字符编码这块不太了解, 身边出现过很多次乱码和字符类型警告的情况,而自己却不知道问题的根本原因,更不知道如何解决。所以通过一段时间的学习,也算懂了一点。把它总结出来,就是现在的这篇文章。在讲这个之前,简单的介绍一些计算机编码的知识。

1. 计算机编码

       首先,要明白一件事,现有的计算机都是采用 二进制 编码的,即在计算机内部每一个位只有0和1两种不同的状态,采用二进制的好处在于简单,容易表示。八个二进制位也叫作一个字节,能组合出 2^8 = 256 种不同的状态。这256种状态从00000000开始,到11111111结束。以此类推,两个字节就能组合出 2^16 = 65536种状态。

2. ASCII编码

       ASCII编码 由美国国家标准学会于1967年制定。它采用单字节编码,总共能表示256种不同的字符。在标准的ASCII编码中,实际只用到后7位,共能表示128种字符,这128个字符包括英文字母,数字,常用标点符号,运算符号和一些控制字符。具体的编码表示可以查看ASCII编码详细表。对于英语来说,这128个编码已经足够了,但是这并不能满足其他国家的需要。
       一些欧洲国家看到美国都有编码了,我们也要,正好ASCII编码不是还剩了128个吗,也不用重新设计一套编码规则,简直是美滋滋啊!于是他们就把剩下的编码位给给安排上自己国家的字符。这就是扩展ASCII编码。但是这样一来又有了新的问题。对于英文来说,无论在哪个国家的编码都一样没有问题。但是其他国家就苦逼了,对于他们扩展的后128个编码,同一个编码在不同的国家就表示不同的字符,这不就乱了套了?比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段。我写封邮件还得说明自己是哪个国家的对方才能解码你写的东西,真鸡儿蛋疼!而此时亚洲的一些国家还处在你说啥嘞的状态,根本没意识到编码是啥,他们中大部分国家的字符根本不止256种,就汉字来说就有接近10万个,这破ASCII编码根本编码不了这么多。如此多的问题急需解决,说明我们需要出一种你从没见过的的船新编码版本,拯救你的不开心!

4. GBK编码

未完待续

5. Unicode编码

未完待续

6. Utf-8编码

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值