简述字符串三种编码方式的发展及联系

计算机如何处理文本?

首先我们要明白,计算机只能处理数字,如果要处理文本,必须先把文本转换为数字才能处理。
一个字节(1byte)=8bit,所以一个字节能表示的最大整数是(11111111)=28-1=255如果表示更大的数必须得用更多的字节。计算机早期是由美国人发明的,最早只有127个字符被编码到计算机中,为什么是127呢?其实就是大小写英文字母(52个),0-9数字(10个),美式英语中特殊的控制符(33个)以及一些标点符号。这套编码就是大家熟知的ASCII,它使用8位编码。

计算机如何处理中文?

随着计算机引入中国,我们想要用计算机处理中文,显然一个字节是不够的,至少需要两个字节,为了避免与ASCII冲突,中国便制定了GB2312编码用来处理中文。当然,不同的国家都会编制一套适合他们自己国语的编码,那么问题来了,这么多的语言怎么能安全地避免冲突呢?显然是无法避免的,在多语言混合的文本中显示出来会有乱码。

计算机如何解决编码乱码问题?

为了解决这个乱码问题,机智的程序员创造了一套编码Unicode(万国码),Unicode把所有的语言都统一到一套编码中。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节只需要把高位字节填充0。
但如果我们写的文本包含的内容几乎都是英文,那么Unicode编码会比ASCII编码多出一倍的存储空间,在存储和传输上十分不划算。
于是出现了针对Unicode的可变长度编码UTF-8(8-bit Unicode Transformation Format)。
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6字节,常用的英文字母被编码成一个字节,汉字通常是3个字节,只有很生僻的字符才会用4-6个字节。ASCII编码实际上就是UTF-8的一部分,所以大量只支持ASCII编码的历史遗留软件可以在UTF-8上继续工作。
画个图,加速对上面文字的理解。
在这里插入图片描述

总结

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

举例:
我们用记事本编辑文本的时候,从文本读取的UTF-8字符会被转换成Unicode字符保存到内存中,编辑完成之后,保存的时候Unicod又会转换成UTF-8保存在文件:
在这里插入图片描述
浏览网页的时候,服务器会把动态地Unicode内容转换成UTF-8再传输给浏览器,是不是经常看到网页的源码上会有类似:的信息,之前一直不明白为什么,其实它表示的就是该网页正是用的UTF-8编码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值