ISO-8859-1,ASCII,Unicode,UTF-8,UTF-16,GB2312,GBK,DBCS编码

本文介绍了ASCII、ISO-8859-1、GB2312、GBK、DBCS等字符编码标准,以及Unicode和UTF-8、UTF-16的转换关系。ASCII仅包含128个字符,而GB2312和GBK是中国的汉字扩展,DBCS用于处理双字节字符。Unicode是一个包含所有字符的统一编码,UTF-8和UTF-16则是Unicode的传输格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASCII

本来只用前0-127号表示英文字母和符号,后来扩充的128-255字符集用来表示欧洲文字如法语,被称为“扩展字符集”,但后128个字符不规范不权威不统一,一般ASCII只认为有128个

ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

GB2312

中国人把ASCII里127后的符号取消,规定前127个符号与原来相同。两个大于127的字符在一起组成一个汉字,还包括了数学符号,平假名,罗马字母等,尤其把ASCII中原有的数字,标点,字母都重新编码两个字节长的编码,即全角字符,127以下的那些就叫做半角字符。GB2312 是对 ASCII 的中文扩展。

GBK

GB2312的两个字节是“大大”,GBK扩充了“大小”也表示汉字,英文字符仍为一字节。GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

DBCS

这一系列汉字编码的标准统称为DBCS(Double Byte Charecter Set )。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。

Unicode

两个字节(16位)表示所有字符(前两个字节全0),少数字符用四个字节,规定unicode里0-127个字符与ASCII一样,称为半角字符(包含字母和标点符号),半角字符的前八位永远是0。Unicode 在制订时没有考虑与ASCII外任何编码保持兼容

UTF-8&UTF-16

Unicode 如何在网络上传输呢?面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8每次传输8位数据,UTF-16每次16个位,因此UTF-8用1~4个字节表示一个字符(英语一个字节,汉语三个字节),UTF-16用个或四个表示一个字符。只不过为了传输时的可靠性,从Unicode到UTF-8并不是直接对应,而要通过算法来转换。

例如"汉"字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,三个字节,这就是其UTF-8的编码,6C 49为UTF-16默认的大端序,看得出Unicode和UTF-16大端序相似。

所有编码在线转换:https://www.qqxiuzi.cn/bianma/Unicode-UTF.php

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值