常见的编码技术简介
文章目录
- 常见的编码技术简介
- 1. 字符编码
- 1.1 ASCII
- 1.2 Unicode
- 2. 数据传输编码
- 2.1 Base系列编码
- 2.1.1 Base64
- 2.1.2 Base16
- 2.1.3 Base32
- 2.1.4 Base85
- 2.1.5 其他Base编码
- 2.2 URL编码
- 2.3 JSON
- 2.4 XML
- 2.5 Protobuf (Protocol Buffers)
1. 字符编码
1.1 ASCII
ASCII(American Standard Code for Information Interchange),是基于7位二进制数的字符编码标准。包括128个字符,每个字符都对应一个0到127之间的数字。
1.2 Unicode
一种全球通用的字符编码标准,支持几乎所有语言的字符。常见的Unicode实现包括UTF-8、UTF-16和UTF-32。
- UTF-8:可变长度的字符编码,使用1到4个字节编码所有的Unicode字符。兼容ASCII,广泛用于网页和文档中。
- UTF-16:使用2或4个字节编码所有的Unicode字符。
- UTF-32:使用4个字节编码所有的Unicode字符。
字符串:hello你好!
Unicode(UTF-8)编码:hello\u4f60\u597d!
2. 数据传输编码
2.1 Base系列编码
2.1.1 Base64
Base64是一种使用 64 个字符(A-Z,a-z,0-9,+ 和 /)来表示二进制数据的编码方法。
效率:每 3 个字节编码为 4 个字符,数据膨胀为原来的 4/3 倍(约 1.33 倍)
应用场景:电子邮件附件的编码(MIME)、在URL中嵌入二进制数据、数据库中的二进制数据存储、XML/JSON等二进制
字符串:hello你好!
Base64:aGVsbG/kvaDlpb0h
2.1.2 Base16
Base16是一种使用 16 个字符(0-9, A-F)来表示二进制数据的编码方法。
效率:每个字节(8 位)用两个字符表示,数据膨胀为原来的 2 倍
应用场景:数字签名、哈希值等的表示、调试和诊断工具中用于显示二进制数据、URL编码
字符串:hello你好!
Base16:68656C6C6FE4BDA0E5A5BD21
2.1.3 Base32
Base16是一种使用 32 个字符(A-Z, 2-7)来表示二进制数据的编码方法。
效率:每 5 个字节编码为 8 个字符,数据膨胀为原来的 1.6 倍
应用场景:电子邮件地址的校验、密钥和令牌的编码、一次性密码(OTP)
2.1.4 Base85
Base85是一种使用 85 个字符(0-9,A-Z,a-z,$% ()*+,-./:;?@ []^_`{|}~)来表示二进制数据的编码方法。
效率:每 4 个字节编码为 5 个字符,数据膨胀为原来的 5/4 倍(约 1.25 倍)
应用场景:Adobe的PostScript和PDF,git编码patch文件
2.1.5 其他Base编码
Base36: 数字0-9,A-Z 或 a-z
Base58: 123456789 ABCDEFGHJKLMNPQRSTUVWXYZ abcdefghijkmnopqrstuvwxyz (去掉 数字0 大写字母I和O 小写字母l)
Base62: 数字0-9,A-Z,a-z
Base91: 0x21-0x7E (去掉 0x27 0x2D 0x5C)
2.2 URL编码
URL编码,用于在URL中传输特殊字符。特殊字符被替换为%
加上两位十六进制数字。例如,空格被编码为%20
,&符号被编码为%26
字符串:hello你好!
URL编码:hello%E4%BD%A0%E5%A5%BD%21
2.3 JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人和机器阅读和编写。
{"message": "hello你好!"
}
2.4 XML
一种标记语言,常用于配置文件、文档存储和数据交换
<data><message>hello你好!</message>
</data>
2.5 Protobuf (Protocol Buffers)
Google开发的一种语言中立、平台中立、可扩展的二进制序列化格式
message Data {required string message = 1;
}
License
License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎
如需转载请标明出处:http://blog.csdn.net/itas109
Refrence:
NULL