排队取快递这会我理清楚了各种编码集

简介: 排队取快递这会我理清楚了各种编码集

前言絮絮念


提到字符集,大多数小伙伴可能多会想起自己曾经在学编程的时候,要么要么别人的代码,或者搞网页开发的,浏览器一跑,啊这,怎么全是乱码...


字节和字符的区分


一、字节


在计算机中,字节是用来计量计算机的存储容量的一个单位。英文是Byte。也就是常见的存储单位MB、GB后的这个大写的"B"。计算机汇总存储信息的最小单位是位(bit),通俗来说了,计算机的一个'0'或者一个'1'就作一位。 它们之间的关系是这种的,

八位 算作 一字节: 1Byte = 8 bit


二、字符


字符是指计算机中使用的文字和符号,比如“1、2、3、A、B、C、~!·#¥%…*()+”等等都是称为字符。


ASCII码


ASCII码应该是四个编码中最傻白甜的了,也应该是科班的同学接触的最多的了吧,大一的C语言作业应该都有字 符 a 字符a字符a转成字 符 A 字符A字符A的身影吧。

ASCII的全名是American Standard Code for Information Interchange, 中文翻译过来是美国信息交换标准码


ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

ASCII码可以表示的字符个数是128个字符。

对于ASCII码而言,印象最深的应该是ASCII码表了。

几个比较重要的是记住就好:0的ASCII码是48;A的ASCII码是65;a的ASCII码是97。其

他的1、b、B呀是逐渐加1去递推就好。然后ASCII码就没有其他比较重要的了吧(狗头保命)。微信图片_20221018160313.png

ANSI码


ANSI码是对ASCII码的一种拓展。因为ASCII码表示的128个字符是不能满足咱们的需求的。

ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。也就是说,ANSI码仅在前128(0-127)个与ASCII码相同,之后的字符全是某个国家语言的所有字符。

ANSI编码其实包括很多编码:中国制定了GB2312编码,用来把中文编进去另外,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准。受制于当时的条件,不同语言之间的ANSI码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。


Unicode编码


为了解决不同国家ANSI编码的冲突问题,Unicode编码因此而生——如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。


Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

但是问题在于,原本只是需要用一个字节存储的英文字母在Unicode里面必须存两个字节(规则就是在原来英文字母对应ASCII码前面补0),这就产生了浪费。那么有没有一种既能消除乱码,又能避免浪费的编码方式,此时,咱们可爱的UTF-8就出来了。


UTF-8编码


UTF-8是一种变长的编码方式,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度

当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,如此一来UTF-8编码也可以是为视为一种对ASCII码的拓展。

比较有趣的是:

unicode编码中一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换


小总结


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

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


相关文章
|
9月前
|
定位技术
后端一次性返回几百万条数据怎样处理
后端一次性返回几百万条数据怎样处理
|
9月前
7-2 银行排队问题之单窗口“夹塞”版 (30分)
7-2 银行排队问题之单窗口“夹塞”版 (30分)
7-46 银行排队问题之单队列多窗口服务 (10 分)
7-46 银行排队问题之单队列多窗口服务 (10 分)
236 0
|
算法 数据挖掘 C++
怎样解决坐席进线慢的问题?
怎样解决坐席进线慢的问题?
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
|
程序员
空闲时间请大家不要接私活,要提升自己!
  现在社会,有很多人都在利用个人时间兼职赚钱,程序员俗称“接私活”,其他行业称作兼职,比如下了班出去跑滴滴,周末兼职抢单送外卖等等,都是普通人很常见的兼职方式。   甚至很多技术同行,我听说也有周末去跑滴滴和送外卖的,我觉得很不可思议,然而我的观点是如果你想成为成功人士,高收入人群那么你不应该去做兼职,不要把你宝贵的时间,浪费在兼职上。   简单经济学分析   涉及到收入,文字洗脑显得很空洞了就,那么今天我给你来一个简单的经济学论调。   我们看一个案例,李嘉诚是香港首富,但是李嘉诚会亲自修剪自家的草坪吗?除非某一天他想体验一下劳动乐趣什么的,否则一定是请人来修剪草坪。
126 0
|
小程序
请排队-在线排队叫号小程序
排队叫号微信小程序-【请排队】的构思和实现
1283 0
请排队-在线排队叫号小程序