常見的編碼技術簡介
文章目錄
- 常見的編碼技術簡介
- 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