大小写字母unicode编码(一次性搞懂字符集,编码,Unicode,Utf-8/16,BOM)
本文目录
- 一次性搞懂字符集,编码,Unicode,Utf-8/16,BOM
- JS - 字符编码 (ASCII,Unicode,UTF-8)
- PB、EB、ZB、YB 、NB、DB是什么啊
- 统一码的ASCII码
- 一个大写字母和一个小写字母分别占几个字节
- unicode字符集是unicode联盟开发的一种多少位字符编码标准
一次性搞懂字符集,编码,Unicode,Utf-8/16,BOM
众所周知,计算机采用二进制的计算方式,一个字节占8位(为什么是8位不是9位10位?大家可以自行探讨),不管任何数据,图片,文字,声音等等,都要转换成具体的数值,最终转换成二进制数据,计算机才能处理,这个过程就是编码,本文所说的编码只是针对文字编码的介绍。
现代计算机技术起源于美国,编码自然也是起源于美国, AscII (American Standard Code for Information Interchange)码就是第一套通用的计算机编码,它包含了英文字符,阿拉伯数字和一些常用符号,一共128个,占一个字节,第一位补0,例如常用的大写字母A是65(01000001),小写字母a是97,所以在J**A里我们可以这样进行大小写转换:
从字面上来理解,字符集是一个包含指定字符的集合,而编码是把文字转换成对应的数字码,确实也是这样,像AscII码,他包含了128个特定字符,并且为每个字符指定了一个序号,可以称之为字符集,编码则是像查字典一样,从字符集中查到对应的序号,再把序号按编码规则转换成具体的数值,称之为编码。AscII码比较简单,只占了一个字节,他的编码结果和码表的序号值是一样的,所以它的字符集和编码的概念区分并不严格。
随着计算机技术的发展,AscII码只能用于拉丁文字符的限制,严重影响了非英语系国家的使用,所以,各个国家和地区分别发展出了对应本地语言的编码方式,GB2312就是中国国家标准总局制定的汉字字符集标准码,GB是国标的意思。实际上,GB2312除了中文以外,还包含了拉丁字符,希腊字符,日文,俄语等等常见字符。
GB2312占据两个字节,也就是说他能容纳的字符数量为 2 一共65536个。为了便于管理,GB2312将所有字符分成了若干个96字符的组,每个组称为区,字符所在的位置称为区位,这样,每个字符都有了对应的区位码。例如,汉字"安"所在的区为第16区,位置序号是18,他的区位码就是1618,有了区位码以后怎样才能转换成编码呢? 很简单,把区位码分开,区号和位置序号分别加上 0xA0,就是对应的编码了。所以"安"的GB2312编码就是 0xA0+16 0xA0+18 = 0xB0B2。
到这里,GB2312基本介绍完了,但是还有一个问题,AscII码在GB2312里是怎么处理的?实际上,GB2312兼容了AscII码,上边提到了,GB2312编码是区位码分别加A0得到的,A的编码是1010,也就是说,GB2312的编码必定是1开头的,而AscII码则是0开头的,这样就简单了,遇到1开头的编码,则按GB2312解码,遇到0开头的则按AscII解码。
GBK是GB2312的升级版,不止包含常用汉字,还包含了繁体,部首,生僻字等等,几乎可以满足所有使用汉字的场景。
Unicode是国际编码组织制定的可以容纳世界上所有文字和符号的字符编码方案,范围从0 - 0x10FFFF,分为17组,每个组称为一个平面(plane),每个平面包含65536个字符,实际上目前只用到了少数平面,比如最常用的基本平面(BMP),范围从0-0xFFFF.其他的从 0x010000 - 0x10FFFFFF 则称为辅助平面(SMP),实际上在我们的日常使用中BMP基本上能满足所有要求。
Unicode包含了全世界日常使用的几乎所有字符,例如汉字"安",他的Unicode码是0x5B89。
什么是utf编码?上边介绍了Unicode,它是一个字符集,规定了每个字符对应的数值,utf则是具体的实现方式,用各种方法来存储字符对应的数值,而根据各种实现方式的不同,又分为utf-8/16/32。
utf8是变长编码,如果是1字节,它和Ascall码是一样的,多字节时第一字节的第一位开始填1,有几个1表示占几个字节,比如110x xxxx表示两个字节,第二个字节开始一直到结束,都是10开头,完整的编码如下:
同样拿汉字"安"来说,它的Unicode码是0x5B89,转换成2进制填充到utf-8的空位里去,多余的位置补0得到结果:0xE5AE89。
现在我们再看一下字符集和编码,就比较清楚了,Unicode是字符集,utf-8编码则是该字符集的一种实现方式,他们并不是同一个概念。
再来看一下utf-16编码,utf-16的长度固定为2个或者4个字节,通常我们使用2个字节就可以了,它对应的就是Unicode中的基本平面BMP,编码就是Unicode码,不足2个字节的位数在前边补0,同样是汉字"安",它的Unicode码是0x5B89,所以utf-16码也是0x5B89。所以AscII码也会占据两个字节,会有一部分空间浪费。编码Unicode辅助平面的字符时,utf-16占用4个字节,平时几乎用不到,所以具体的编码规则就不做介绍了。
utf-32编码固定占用4个字节,他对应的是全部Unicode码,这种编码方式基本用不到,也不需要深入了解。
这几个词平时出现的频率比较少一些,LE表示Little Endian,小端序,BE表示Big Endian,大端序,分别代表了计算机领域数据存储的两种方式。
大端序:
小端序:
实际上我们在日常使用过程中不需要关心当前计算机使用的是那种方式。但在UTF-16编码时,它也有大小端序两种编码方式,例如0x5E89,大端序值为0x5E89,小端序则要反过来表示为0x895E,为了区分这两种方式,在采用UTF-16编码时,在数据流的开始添加了一个统一的标识,0xFEFF表示大端序,对应的编码是utf-16be,0xFFFE表示小端序,对应的编码是utf-16be,这个表示就是BOM。
BOM全称Byte Order Mark,字节序标记,除了utf-16之外,utf-8也可以添加bom,它的bom固定为0xEFBBBF,选择编码方式为utf-8 with bom时,生成的文件流中就会出现这个bom。为什么utf-8可以不需要bom呢,因为utf8是变长的,它根据第一个字节信息判断每个字符的长度,不存在正反顺序的问题,我们日常使用的utf-8都是不带bom的。
看完了字符编码的介绍,这里有一个问题,java里的char类型能不能存储中文字符?
java里char占了两个字符,很容易得出结论,如果采用utf-8,是不能存储中文的,其他编码方式GB2312,utf-16都可以存储中文,是这样吗?
其实没有这么简单,不管我们在器里选什么编码方式,对java里的char都没有影响,实际上char对应的是Unicode的基本平面BMP。我们在浏览器里选择的编码只是对应文件的保存方式,跟char采用什么编码没有任何关系,同样的,如果我们在new一个String的时候指定了编码,这个编码也只对这一个String生效,而Java里的char是编译器里定死了的,它对应的就是BMP,也可以认为是utf-16的2字节部分。
那么ava里的char类型到底能不能存储中文字符,当然可以,但是仅对应BMP部分,各种繁体字生僻字就无能为力了。
JS - 字符编码 (ASCII,Unicode,UTF-8)
ASCII 只有127个字符,表示英文字母的大小写、数字和一些符号,但由于其他语言用ASCII 编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2312编码格式,相同的,其他国家的语言也有属于自己的编码格式。
由于每个国家的语言都有属于自己的编码格式,在多语言文本中会出现乱码,这样Unicode应运而生,Unicode就是将这些语言统一到一套编码格式中,通常两个字节表示一个字符,而ASCII是一个字节表示一个字符,这样如果你编译的文本是全英文的,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
为了解决上述问题,又出现了把Unicode编码转化为“可变长编码”UTF-8编码,UTF-8编码将Unicode字符按数字大我码为1-6个字节,英文字母被编码成一个字节,常用汉字被编码成三个字节,如果你编译的文本是纯英文的,那么用UTF-8就会非常节省空间,并且ASCII码也是UTF-8的一部分。
搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:(1) 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。(2)用记事本的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,完成后,保存的时候再把Unicode转换为UTF-8保存到文件。如下图:
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:
PB、EB、ZB、YB 、NB、DB是什么啊
PB、EB、ZB、YB 、NB、DB都是存储单位。
1PB(Petabyte,千万亿字节,拍字节)=1024TB= 2^50 B;
1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 2^60 B;
1ZB(Zettabyte,十万亿亿字节,泽字节)= 1024EB= 2^70 B;
1YB(Yottabyte,一亿亿亿字节,尧字节)= 1024ZB= 2^80 B;
1BB(Brontobyte,一千亿亿亿字节)= 1024YB= 2^90 B;
1NB(NonaByte,一百万亿亿亿字节) = 1024BB = 2^100 B;
1DB(DoggaByte,十亿亿亿亿字节) = 1024 NB = 2^110 B。
扩展资料:
字
在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字。字通常分为若干个字节(每个字节一般是8位)。在存储器中,通常每个单元存储一个字,因此每个字都是可以寻址的。字的长度用位数来表示。
在计算机的运算器、***中,通常都是以字为单位进行传送的。字出现在不同的地址其含义是不相同。例如,送往***去的字是指令,而送往运算器去的字就是一个数。
字长
计算机的每个字所包含的位数称为字长。根据计算机的不同,字长有固定的和可变的两种。固定字长,即字长度不论什么情况都是固定不变的;可变字长,则在一定范围内,其长度是可变的。
计算的字长是指它一次可处理的二进制数字的数目。计算机处理数据的速率,自然和它一次能加工的位数以及进行运算的快慢有关。如果一台计算机的字长是另一台计算机的两倍,即使两台计算机的速度相同,在相同的时间内,前者能做的工作是后者的两倍。
字节
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。
在微型计算机中,通常用多少字节来表示存储器的存储容量。
统一码的ASCII码
大多数计算机采用ASCII码(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的7位编码方案。统一码(Unicode)包含ASCII码,’\u0000’到’\u007F’对应全部128个ACSII字符。在J**A中可以使用统一码。
一个大写字母和一个小写字母分别占几个字节
不同编码方式1个英文字母占的字节是不同的:
1.ASCII码:英文字母(无大小写)占一个字节的空间,中文字符占两个字节的空间。
2.utf-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文的标点符号需要三个字节,英文的标点符号需要一个字节。
3.Unicode编码:英文编码是两个字节,中文编码是两个字节。标点符号在汉语中占两个字节,在英语中占两个字节。
扩展资料:
字节:
一个字节是一组相邻的二进制百位。通常8位为一个字节。它是组成信息并作为一个整体参与操作的一个小单元。
在微型计算机中,通常用来表示存储器的存储容量的字节数。
例如,在c++中已知的数据类型表示中,char通常是1字节,int是4字节,double是8字节。
理解编码的关键是准确理解字符和字节的概念。这两个概念容易混淆,所以让我们在这里做一个区分:
概念描述举例
字符是人们使用的符号,是抽象意义上的符号。中间’1’,’’,’’,’$’,“¥”……
字节计算机中存储数据的单元,一个8位二进制数,是一个非常特殊的存储空间。0x010x450xfa……
unicode字符集是unicode联盟开发的一种多少位字符编码标准
ASCII:
7位字符集,包括52个大小写英语字母,10个阿拉伯数字,1个空格,32个符号。
适用于纯英文环境,兼容性最好,在其他各种字符集下都能正确识别;不适用于英语以外的环境。
Latin1(ISO-8859-1):8位字符集,向下兼容ASCII字符集,并增加了一些西欧语言中的字母和符号。
优点:适用于西欧语种,得到世界广泛的软件支持;
缺点:不能表示拉丁语系以外的语言,不兼容少量只使用7位字符集的古老程序。
GB2312:16位字符集,收录有6763个简体汉字,682个符号;
优点:适用于简体中文环境,属于中国国家标准,在大陆(和新加坡?)得到广泛支持;
缺点:不兼容繁体中文,其汉字集合过少。
big5:16位字符集,收录有13060个繁体汉字,440个符号;
优点:适用于繁体中文环境,属于台湾官方标准,为繁体Windows所使用,在台湾和香港得到广泛支持,而且,由于台湾软件业发展较早,国外软件支持big5的比支持gb2312/gbk的要多;
缺点: 不兼容简体中文环境,和gb2312之间需要转换。
GBK:16位字符集,收录有21003个汉字,883个符号;
优点:适用于简繁中文共存的环境,为简体Windows所使用(代码页cp936),向下完全兼容gb2312; 缺点:不属于官方标准,和big5之间需要转换。
更多文章:
表单大师下载表单大师app下载(除了问卷星还有什么比较好的调研平台吗)
2026年4月7日 08:20
大一程序设计基础题库(国家开放大学《程序设计基础》形考任务1试题)
2026年4月7日 08:00
visible副词(visible的解释visible的解释是什么)
2026年4月7日 07:20
大小写字母unicode编码(一次性搞懂字符集,编码,Unicode,Utf-8/16,BOM)
2026年4月7日 07:00
web服务器默认的端口号是(web服务器和数据库的端口是相同的吗)
2026年4月7日 06:40
crack破解文件夹在哪(3dm下了个刺客信条起源,crack文件应该放在哪里)
2026年4月7日 06:20
office登录界面刷不出来(电脑上office登录不成功怎么办登录上去以后登录界面一会儿又跳出来了)
2026年4月7日 05:40




