字符串小结

字符串,在编程世界里,应该是最特殊的一个对象,运用最广泛的一个对象。曾经,我们对于gbk,utf-8,gb2312,ascll,unicode等等,也有过许多疑惑,和懵逼。现在从计算机的发展,来解释一下这些标准。

大家先预先理解两个概念:一个是编码格式,一个是存储格式。

ascll

计算机是谁发明的?
冯诺依曼。一个德国人。但是在美国,替美国人干活。所以搞出来的标准是美国的习惯。把0–9数字,和26个英文单词的大小写,及若干符号编排成127个。占7位,不到一个字节。

这边整,英国人,新西兰,加拿大,澳大利亚等英语国家,可能没啥问题,照用不误。但德国人,法国人,俄国人,日本人,意大利人,中国人不干了。
中文,大概五万多个,除了生僻的字外,基本两个字节可以搞定,于是搞了gb2312;出于同样的心理,日本人搞了Shift_JIS里,韩国人搞了Euc-kr里,各国有各国的标准。这样整个计算机世界就乱套了。中日文不同,中韩文不同,没法交流,很多乱码。

零几年的软件,N多乱码,几乎网络上留存无数解决中文乱码的问题。

必须要解决如何搞?那就搞一套统一的呗。
Unicode横空出世。

Unicode

Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
两个字节不行包含的,就四个字节。四个字节不能包含的,就8个字节。反正,总能把全世界的语言都包含进去。

好了,这样皆大欢喜,大家都能用自己的国家语言,没有乱码问题了。
随着而来的又出现了一个问题。美国人,英国人不干了。
都用unicode,两个字节表示一个字,我们就用了26个字母,ascll就搞定了,一个字节就搞定了。那我不浪费了很多空间。第二个字节全是0.

然后utf-8就出现了。

uft-8

“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间

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

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

小结

编码大小支持语言
ASCII1个字节英文
Unicode2个字节(生僻字4个)所有语言
UTF-81-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节所有语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值