字符集&编码总结表格
字符集 |
文本存储 |
说明 |
参考 http://www.fmddlmyy.cn/text24.html |
|||
ASCII |
所有编码方式都兼容ASCII |
1967年发布规范标准,最后一次更新则是在1986年 |
|
在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1 |
||
ANSI 各国家自己的字符集标准 |
ANSI |
将ascii码扩展到8bits,增加了0x80-0xff共128个字符。在cjk(chinese japanese korean)系统中,ansi还常常指代包括多字节内码的编码。 |
|
|||
记事本 |
记事本保存带BOM,但可以识别无BOM的UTF8和Ascii |
记事本里面有四个选项: |
||||
GB系列 |
GB2312 |
1980年GB2312收录7445汉字:高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 |
GB2312编码对所收录字符进行了“分区”处理,共94个区,每区含有94个位,共8836个码位。这种表示方式也称为区位码。 |
GB2312编码表:https://www.qqxiuzi.cn/zh/hanzi-gb2312-bianma.php |
||
GBK |
增加繁体字 |
GBK编码是从FE50-FE7E,FE80-FEA0 |
汉字字符集编码查询:https://www.qqxiuzi.cn/bianma/zifuji.php |
|||
GB18030 |
GB18030有两个版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,共27484个汉字,它的主要特点是在GBK基础上增加了CJK统一汉字扩充A的汉字,包括少数民族汉字。GB18030-2005的主要特点是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。本文数一数GB18030中的汉字,也顺便看看其它标准中的汉字。 |
|||||
繁体中文 |
Big5 |
1984年,台湾五大厂商宏碁、神通、佳佳、零壹以及大众一同制定了一种繁体中文编码方案,因其来源被称为五大码,英文写作Big5,后来按英文翻译回汉字后,普遍被称为大五码。 |
繁体汉字13053个,808个标点符号、希腊字母及特殊符号。大五码的编码码表直接针对存储而设计,每个字符统一使用两个字节存储表示。第1字节范围81H-FEH,避开了同ASCII码的冲突,第2字节范围是40H-7EH和A1H-FEH。因为Big5的字符编码范围同GB2312字符的存储码范围存在冲突,所以在同一正文不能对两种字符集的字符同时支持。 |
|||
Unicode |
1990年开始研发,1994年正式公布 |
前面的 65536 个字符位于基本平面(Basic
Multilingual Plane),缩写为BMP,总共定义了17个平面 |
https://blog.csdn.net/hezh1994/article/details/78899683 |
|||
UTF-8 |
Unicode 十六进制码点范围 UTF-8 二进制 |
Unicode标准建议用BOM(Byte Order Mark)来区分字节序 |
||||
UCS2/UCS4 |
UCS-2 (2-byte Universal Character Set)是一种定长的编码方式,UCS-2仅仅简单的使用一个16位码元来表示码位,也就是说在0到0xFFFF的码位范围内,它和UTF-16基本一致。但它不能表示基本平面BMP以外的字符,所以被淘汰。 |
|||||
UTF-16 |
汉字"𠮷"的 Unicode 码点为 0x20BB7,该码点显然超出了基本平面的范围(0x0000 - 0xFFFF),因此需要使用四个字节表示。首先用
0x20BB7 - 0x10000 计算出超出的部分,然后将其用 20 个二进制位表示(不足前面补 0 ),结果为0001000010 1110110111。接着,将前 10 位映射到 U+D800 到 U+DBFF 之间,后 10 位映射到 U+DC00 到 U+DFFF 即可。U+D800 对应的二进制数为
1101100000000000,直接填充后面的 10 个二进制位即可,得到 1101100001000010,转成 16 进制数则为 0xD842。同理可得,低位为 0xDFB7。因此得出汉字"𠮷"的 UTF-16 编码为 0xD842 0xDFB7。Unicode3.0 中给出了辅助平面字符的转换公式: |
|||||
UTF-32 |
||||||
各领域编码 |
Base64 |
原文的字节数量应该是3的倍数,如果这个条件不能满足的话,具体的解决办法是这样的:原文剩余的字节根据编码规则继续单独转(1变2,2变3;不够的位数用0补全),再用=号补满4个字节。这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。因为一个原字节至少会变成两个目标字节,所以余数任何情况下都只可能是0,1,2这三个数中的一个。如果余数是0的话,就表示原文字节数正好是3的倍数(最理想的情况)。如果是1的话,转成2个Base64编码字符,为了让Base64编码是4的倍数,就要补2个等号;同理,如果是2的话,就要补1个等号。 |
标准base64字符A-Z,a-z,0-9,+/,还有各领域变种(改变最后2个字符及结束符兼容其领域) |
|||
URI包括: |
网络传输使用 |
Javascript中各编码函数区别 安全字符(函数不会对这些字符进行编码) |
URI = Universal Resource Identifier 统一资源标志符 |
foo://example.com:8042/over/there?name=ferret#nose |
posted on 2019-07-29 17:50 hawking_xu 阅读(217) 评论(0) 编辑 收藏 举报