字符集和字符编码的学习
文章目錄
- 標(biāo)準(zhǔn) ASCII
- 擴(kuò)展 ASCII
- GB2312 編碼
- GBK 編碼
- GB18030 編碼
- Unicode 編碼
- UCS-2 字符集
- UCS-4 字符集
- UTF-8 編碼
先有字符集,然后對(duì)每個(gè)字符進(jìn)行編碼,這叫字符編碼,不同的編碼規(guī)則就產(chǎn)生了不同的編碼方案。
標(biāo)準(zhǔn) ASCII
標(biāo)準(zhǔn) ASCII 碼也叫基礎(chǔ) ASCII 碼,使用 7 位二進(jìn)制數(shù)(剩下的1位二進(jìn)制為0)來表示所有的大寫和小寫字母,數(shù)字 0 到 9、標(biāo)點(diǎn)符號(hào),以及在美式英語中使用的特殊控制字符。
ASCII 編碼是直接將 ASCII 字符集的碼位轉(zhuǎn)換成二進(jìn)制數(shù)進(jìn)行存儲(chǔ)。
7 位二進(jìn)制:0000 0000 ~ 0111 1111 這個(gè)范圍的二進(jìn)制數(shù)可以表示 128 個(gè)字符,最高位沒有使用
可見字符:英文字母、數(shù)字、標(biāo)點(diǎn)符號(hào)
不可見字符:即控制字符,例如,回車符、換行符等
需要記住的字符 ASCII 編碼:
48~57 表示的是數(shù)字
65~90 表示的是大寫英文字母
97~122 表示的是小寫英文字母
擴(kuò)展 ASCII
后 128 個(gè)稱為擴(kuò)展 ASCII 碼,用來表示128 個(gè)特殊符號(hào)字符、外來語字母和圖形符號(hào),這叫 ASCII 擴(kuò)展字符集。
1000 0000 ~ 1111 1111 這個(gè)范圍的二進(jìn)制數(shù)可以用來表示 128 個(gè)字符。
標(biāo)準(zhǔn) ASCII 和擴(kuò)展 ASCII 總共可以表示 256 個(gè)字符,這些字符都用 1 個(gè)字節(jié)來表示。
GB2312 編碼
GB2312 字符集采有分區(qū)管理的模式,組成 94*94 的方陣,每一行稱為一個(gè)“區(qū)”,每一列稱為一個(gè)“位”,區(qū)號(hào)位號(hào)的范圍均為 01-94,區(qū)號(hào)和位號(hào)組成的代碼稱為“區(qū)位碼”,共計(jì)有 8836 個(gè)碼位。
把每個(gè)字符對(duì)應(yīng)的碼位轉(zhuǎn)換成二進(jìn)制數(shù),就是 GB2312 編碼。
收集了 7445 個(gè)字符,其中漢字 6763 個(gè)。
01~09 區(qū)收錄了除漢字以外的圖形字符,共計(jì) 682 個(gè)字符
10~15 區(qū)為空白區(qū),沒有使用
16~15 區(qū)收錄了 3755 個(gè)一級(jí)漢字(常用漢字),按拼音排序
56~87 區(qū)收錄了 3008 個(gè)二級(jí)漢字(非常用漢字),按部首/筆畫排序
88~94 區(qū)為空白區(qū),沒有使用
01~09 區(qū)表示非漢字的圖形字符,共計(jì) 682 個(gè)字符:
左上角的編號(hào)叫“區(qū)號(hào)”,如上圖的 03 區(qū)中的字符“y”的位號(hào)是 89,那么這個(gè)“y”的碼位就是 0389。
16~55 區(qū)收錄了 3755 個(gè)一級(jí)漢字,按拼音排序:
如上圖所示,漢字“餅”的區(qū)位碼 1793。
56~87 區(qū)收錄了 3008 個(gè)二級(jí)漢字,按部首/筆畫排序:
二級(jí)漢字都是一些不常用的漢字。
如上圖所示,漢字“侃”的碼位是 5709。
如何存儲(chǔ)“侃”這個(gè)漢字?
計(jì)算“侃”這個(gè)漢字字符的 GB2312 編碼,如下圖所示:
根據(jù)上圖所示的計(jì)算結(jié)果,0xD9A9 就是“侃”這個(gè)漢字的 GB2312 編碼,可為什么加上 A0 呢?不知道。
以上可以知道 GB2312 編碼是 2 個(gè)字節(jié)表示一個(gè)字符。
GBK 編碼
在 GB2312 字符集的基礎(chǔ)上擴(kuò)充,得到 GBK 字符集,對(duì)應(yīng)的編碼叫 GBK 編碼。
GB18030 編碼
在 GBK 字符集的基礎(chǔ)上擴(kuò)充,增加了很多少數(shù)民族的字符,得到 GB18030 字符集,對(duì)應(yīng)的編碼叫 GB18030 編碼
Unicode 編碼
Unicode 的學(xué)名是"Universal Multiple-Octet Coded Character Set",通用多八位編碼字符集,簡稱為 UCS。
UCS-2 字符集
Unicode 早期使用 UCS-2 字符集,使用兩個(gè)字節(jié)表示一個(gè)字符,可以表示 65536 個(gè)字符。
UCS-4 字符集
因?yàn)椴蛔阋员硎救澜绲淖址?#xff0c;所以升級(jí)成了 UCS-4 字符集,使用 4 個(gè)字節(jié)來表示一個(gè)字符,使用 32 位的二進(jìn)制數(shù)來表示字符,可以表示將近 43 億個(gè)字符。
UTF-8 編碼
UTF-8(Unicode Transformation Format)是針對(duì) Unicode 的一種可變長度字符編碼,它不是一種字符集。
UTF-8 將 UCS-4 字符集的碼位劃分成 4 個(gè)區(qū)間。
0x0000 0000 至 0x0000 007F:0xxxxxxx
0x0000 0080 至 0x0000 07FF:110xxxxx 10xxxxxx
0x0000 0800 至 0x0000 FFFF:1110xxxx 10xxxxxx 10xxxxxx
0x0001 0000 至 0x0010 FFFF:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
漢字“王”在 UCS-4 的碼位(即 Unicode 編碼)是 0x0000738B,轉(zhuǎn)換成二進(jìn)制碼就是 00000000 00000000 01110011 10001011。
0x0000738B 屬于 UTF-8 所劃分的第三區(qū)間,即三字節(jié)模板 1110xxxx 10xxxxxx 10xxxxxx,00000000 00000000 01110011 10001011 從后面往前面逐個(gè)替代模板中的 x,得到 11100111 10001110 10001011,再把這個(gè)二進(jìn)制編碼轉(zhuǎn)換成十六進(jìn)制編碼得到 0xe78e8b,而這個(gè)就是漢字“王”的 UTF-8 編碼了。
總結(jié)
以上是生活随笔為你收集整理的字符集和字符编码的学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想商务笔记本型号(联想商务本尺寸)
- 下一篇: 缓存和缓冲的区别