Unicode、 ASCLL和UTF-8

什么是编码?为什么会有编码?

人类的语言有太多了,因而表示这些语言的符号太多。
我们无法用计算机中一个基本的存储单元—— byte 来表示。

计算机只认0和1,人类只能认文字,所以就有有一个从文字到0、1的映射了。从文字到0、1的映射称为编码,反过来从0、1到文字叫解码。

ASCII:
一个字节;
8bits的英文编码,无法用来表示中文
用一个字节的低7位来表示英文的128个字符,高1位统一为0;
(中文编码至少需要两个字节)
实际使用低7位,首位为0,127个字符。

Unicode:
两个字节;(所以占用的存储空间比ASCLL大一倍)
使用两字节对全球字符进行统一编码,可以用来表示所有语言;
有65536个编码,UCS-2为两字节版本(2^16 =65536)。

现在unicode可以容纳100多万个符号

unicode虽然统一了全世界字符的二进制编码,但没有规定如何存储,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,文本文件的大小会因此大出二三倍,这对于存储来说是极大的浪费。
这样导致一个后果:出现了Unicode的多种存储方式。

备注: Unicode在js、json里出现的比较多。

UTF-8:
UTF-8就是在互联网上使用最广的一种unicode的实现方式。

最大的特点:就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

UTF-8编码不仅考虑了编码,还考虑了存储。

对于英语字母,UTF-8编码和ASCII码是相同的。

计算机中通用的字符编码的工作方式

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值