精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

作為一個程序員,你應該知道的編碼知識

新聞 前端
計算機只認 0 和 1 ,所有的影像和字符最終都會轉換成計算機能夠認識的二進制。一個二進制位(bit)可以表示兩種狀態 0 和 1 ,一個字節(byte)由八個二進制位組成,所以一個字節一共可以表示256( 2^8 )種狀態。

 [[320115]]

在諜戰劇里,我們經??吹竭@樣一個橋段,特工人員,千辛萬苦拿到一條信息,打開一看是一串數字,然后趕緊跑到一個秘密地方,拿出一個密碼本(也可能是一本唐詩選),按照一定規則(只有自己人知道),比如第一個數字表示頁數,第二個數字表示行數,第三個數字表示第幾個字,逐一將信息翻譯出來。如果這個過程中用了錯誤的密碼本,或者不知道規則,那么將會解碼失敗。

計算機的編解碼過程跟上面的過程是一樣一樣的。

計算機只認 0 和 1 ,所有的影像和字符最終都會轉換成計算機能夠認識的二進制。一個二進制位(bit)可以表示兩種狀態 0 和 1 ,一個字節(byte)由八個二進制位組成,所以一個字節一共可以表示256( 2^8 )種狀態。如果我們規定每種狀態代表一個字符,那么一個字節就可以表達出 256 個字符。

ASCII

計算機是由美國人發明的,所以在最初設計編碼的時候,就只考慮了英文的編碼。英文字符很少,加上一些特殊字符,一共也就100個左右,確切的說是128個。這樣的話用一個字節進行編碼就完全夠了,不僅夠用了,而且還富裕出一位,即第一位一直沒有參與編碼,統一定為 0 。這就是所謂的 ASCII 編碼。在 ASCII 編碼中,空格 SPACE 是 32 (二進制 00100000 ),大寫的字母 A 是 65 (二進制 01000001 )。

非ASCII

隨著計算機的普及,歐洲也開始普及計算機,歐洲人發現 ASCII 規定的 128 個字符不能滿足他們的使用,比如,在法語中,字母上方有注音符號,就無法用 ASCII 碼表示。于是,一些歐洲國家就決定,把字節中閑置的第一位編入新的符號。比如,法語中的 é 的編碼為 130 (二進制 10000010 )。這樣一來,這些歐洲國家使用的編碼體系,最多可以表示 256 個符號。這就是大家經常見到的 ISO-8859-1 編碼,也叫 Latin1 編碼。

中文編碼

隨著計算機的普及,國人也開始使用計算機,但是發現按照之前的編碼方式,根本就沒有漢字什么事兒,也就是計算機根本沒辦法認識漢字。

GB2312

為了能夠讓計算機認識漢字,我們決定對漢字進行編碼,本著敢想敢干的精神,我們規定用兩個字節表示一個漢字。

具體規則是這樣的:一個小于 127 的字節代表的意義與原來的 ASCII 相同,但兩個大于 127的字節連在一起時,就表示這是一個漢字,前面的一個字節稱為高字節,后面一個字節稱為低字節,這樣我們就可以組合出 6763 個簡體漢字。這就是大家常說的 GB2312 編碼。

GBK

很顯然 GB2312 編碼的 6763 個漢字,并不能適應所有的使用場景,比如“喆”字就不再其中,于是在 GB2312 的基礎上又進行了新的擴展,規定只要第一個字節是大于 127 的就OK,至于第二個字節是大于 127 還是小于 127 都無所謂了。經過這樣的改動之后,收錄的漢字及符號就可以達到 2W 多個,這就是我們常說的 GBK 編碼。

再后來,人們繼續對第二個字節進行擴展,發展出了 GB18030 編碼,比 GBK 又多出了一些字符編碼。

至此,所有的漢字編碼都是用兩個字節表示的,但是英文是用一個字節表示。上了一些年紀的程序員都體驗過,一個漢字算兩個英文字符的經歷。

BIG-5

上面提到的都是簡體中文編碼,雖然 GBK 及 GB18030 包含了部分繁體字,但是也不全面,于是臺灣同胞就發了專門支持繁體字的 Big5 編碼,也就是大家經常說的大五碼。

一個小問題

不知道大家有沒有注意到一個問題,在單字節編碼的時候,對于那些大于 127 小于 256 的編碼,在不同的國家代表的字母很可能不一樣。比如, 130 在法語編碼中代表了 é ,在希伯來語編碼中卻代表了字母 Gimel (ג) ,在俄語編碼中又會代表另一個符號。在漢字的雙字節編碼中也存在這樣的問題,比如 BIG5 編碼跟 GBK 編碼都是雙字節編碼,但是代表的漢字卻不一樣。

這就相當于,同樣一串二進制數值,A特工組織按照他們的規則解析出來可能是“你好”,而B特工組織按照他們的規則解析出來可能是“滾蛋”。特工組織之間的翻譯標準不一樣是相當有必要的,但是計算機的編碼規則如果各不相同就比較麻煩了。比如你跟臺灣的志玲姐姐聊天,志玲姐姐用 BIG5 編碼給你發了一封信,然后你用 GBK 去解碼,……,也許就沒有然后了。

Unicode

為了解決上面的問題,有個叫 ISO 的國際標準組織,決定放棄所有區域性編碼,如 BIG5 , GBK 等,重新制定一個新的編碼,這個編碼集將包含所有字符的編碼,這樣大家就都統一了,這套編碼的英文全稱“Universal Multiple-Octet Coded Character Set”,簡稱UCS, 俗稱 “Unicode“。 Unicode 的出現相當于秦始皇對度量衡跟貨幣進行了統一。

Unicdoe 按照日常字符的使用頻繁度劃分了 17 個平面,編號為 0-16 , 0 號平面稱為基本多語言平面(Basic Multilingual Plane,簡稱 BMP ),包含了日常使用最頻繁的字符,編碼范圍從 0000 到 FFFF ,這樣該平面可以表示 2^16=65536 個字符;其它平面的編碼范圍也是從 0000 到 FFFF ,所以其它平面也可以編碼 65535 個字符,這樣 17 個平面一共可以編碼 17×65,536 = 1,114,112 個符號。

我們最常用的 Unicode 編碼使用的是多語言平面的編碼,即所有字符都用兩個字節進行編碼(其它平面可能需要三個或四個字節)。舉個例子比如中國的'中'字 Unicode 碼是 4E2D ,小寫'a'的 Unicode 碼是 0061 .

這里面存在兩個問題,如果所有英文字符都是按照 Unicode 編碼,那么會出現浪費存儲空間的問題。明明一個字節可以搞定的事情,偏偏要用兩個字節。

第二個問題就是計算機如何知道這是 Unicode 編碼還是 ASCII 編碼,也就是 2 個字節表示的一個字符,還是 2 個字符呢。

UTF

UTF 的全稱是 Unicode Transformation Format ,也就是 Unicode 的轉換格式。上面提到了,如果直接使用 Unicode 碼進行存儲會存在浪費空間的問題,而 UTF-8 的出現就是為了解決該問題, UTF-8 使用變長的方式存儲 Unicode 碼,也就是英文字符繼續使用一個字節進行存儲,但是漢字要使用 3 個字節。那么 UTF-8 是如何做到的呢。

首先,對于單字節的符號,字節的第一位設為 0 ,后面 7 位為這個符號的 Unicode 碼。因此對于英語字母, UTF-8 編碼和 ASCII 碼是相同的。

其次,對于 n 字節的符號( n > 1 ),第一個字節的前 n 位都設為 1 ,第 n + 1 位設為 0 ,后面字節的前兩位一律設為 10 。剩下的沒有提及的二進制位,全部為這個符號的 Unicode碼。

下表總結了編碼規則,字母 x 代表可用的編碼位。

Unicode符號范圍(十六進制) UTF-8編碼方式(二進制)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

根據上表,對 UTF-8 編碼進行解讀會發現,如果一個字節的第一位是 0 ,則這個字節單獨就是一個字符;如果第一位是 1 ,則連續有多少個 1 ,就表示當前字符占用多少個字節。

舉個例子

假設“hello世界”這樣一個字符串,他們的 Unicode 的編碼分別是

  1. 1h--0068 
  2. 2e--0065 
  3. 3l--006C 
  4. 4l--006C 
  5. 5o--006F 
  6. 6世--4E16 
  7. 7界--754C 

按照 UTF-8 的編碼規則可以得到如下 UTF-8 編碼

  1. 1h--01101000 
  2. 2e--01100101 
  3. 3l--01101100 
  4. 4l--01101100 
  5. 5o--01101111 
  6. 6世--11100100-10111000-10010110 
  7. 7界--11100111-10010101-10001100 

可以看到用 UTF-8 編碼之后,英文字符占用一個字節,而漢字占用了三個字節,一共需要 11個字節,而如果直接存儲 Unicode 碼則需要 14 個字節。 UTF-8 編碼對于英文來說節省了很大空間,但是對于中文來說增加了空間。

Little endian 和 Big endian

上面提到 Unicode 是用兩個字節表示字符,如果第一個字節在前,就是"大端方式"(Big endian),第二個字節在前就是"小端方式"(Little endian)。'世'字的 Unicode 碼是 4E16 ,一個字節是 4E ,一個字節是 16 , 存儲的時候如果 4E 在前就是大端存儲,如果是 16 在前就是小端存儲。

那么計算機是怎么知道一個文件是采用哪種編碼方式呢?

Unicode 規范定義,每一個文件的最前面分別加入一個表示編碼順序的字符,這個字符的名字叫做"零寬度非換行空格"(zero width no-break space),用 FEFF 表示。這正好是兩個字節,而且 FF 比 FE 大 1 。

如果一個文本文件的頭兩個字節是 FE FF ,就表示該文件采用大頭方式;如果頭兩個字節是 FF FE ,就表示該文件采用小頭方式。

總結

UTF-8 編碼是基于 Unicode 字符集的一種編碼實現?,F在幾乎所有的編程語言和操作系統都支持 Unicode 編碼,使用 Unicode 編碼之后,再也不會出現上文提到的一個漢字等于兩個英文字符的尷尬局面。

GBK , BIG5 等都屬于區域性編碼只能在固定范圍內使用,比如 GBK 只適合在簡體中文環境使用,雖然 GBK 相比于 UTF-8 更節省空間,但現在全世界都變成地球村了,所以還是建議大家都使用 UTF-8 編碼。

ANSI :在 window 下,如果我們用記事本打開文檔,經常會見到 ANSI 編碼方式,這是 Windows 默認的編碼方式。對于英文文檔采用 ASCII 編碼,對于簡體中文文檔采用 GB2312 編碼(只針對 Windows 簡體中文版,如果是繁體中文版會采用 Big5 碼)。

責任編輯:張燕妮 來源: 花括號MC
相關推薦

2013-12-02 10:10:35

Python工具庫

2019-07-29 11:51:18

程序員設計軟件

2016-04-19 10:20:42

程序員遺憾

2009-03-18 13:12:36

程序員技術IT行業

2021-12-17 10:58:07

Shell腳本語言

2013-04-22 09:15:20

2013-06-03 11:24:45

程序調試Java

2013-07-10 15:17:20

程序員創業

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2016-07-26 13:47:49

程序員新手編程

2016-04-18 12:58:42

菜鳥程序員跳槽

2015-11-19 09:36:13

前端程序員jQuery

2013-12-24 09:59:48

程序員管理

2019-07-19 09:21:54

Java開源庫程序員

2023-03-28 23:08:18

Bash編碼Shell

2014-01-06 09:33:32

程序員管理

2012-02-28 10:52:13

2018-03-07 12:57:53

2013-04-15 09:44:01

程序員

2014-09-26 10:13:32

程序員秘密規則
點贊
收藏

51CTO技術棧公眾號

www.欧美精品| 欧美视频二区36p| 亚洲精品免费在线视频| 少妇久久久久久被弄高潮| 国产精品中文字幕制服诱惑| 色综合久久久久久久| 99亚洲精品视频| 午夜黄色小视频| 美女网站在线免费欧美精品| 欧美黑人狂野猛交老妇| 色婷婷在线影院| 一区二区三区高清在线观看| 一本大道综合伊人精品热热| 欧美一级黄色录像片| 婷婷伊人综合中文字幕| 久久66热re国产| 97av视频在线| h色网站在线观看| 综合综合综合综合综合网| 欧美一区二区三区人| 日本中文字幕片| 高清电影在线观看免费| 国产目拍亚洲精品99久久精品| 99中文字幕| 亚洲图片欧美在线| 国产农村妇女精品一二区| 美女av一区二区| 波多野结衣片子| 风间由美一区二区av101| 欧美日韩在线免费视频| 草草视频在线免费观看| 黄网页免费在线观看| 91美女精品福利| 国产剧情在线观看一区| 亚洲美女一区二区三区| 日韩一区不卡| 午夜激情小视频| 成人亚洲一区二区一| 成人午夜在线观看| 中文在线资源天堂| 久久亚洲欧洲| 78色国产精品| 一级aaa毛片| 欧美日韩亚洲一区| 欧美成人激情视频免费观看| 久久久久亚洲AV成人无在 | 日韩精品欧美| 亚洲欧美国产日韩中文字幕| 亚洲一级av无码毛片精品| 九九九九九九精品任你躁 | 国产成a人亚洲精v品无码| 免费高清在线视频一区·| 国产成人免费av| 无码人妻精品一区二区| 久久精品人人做人人爽电影蜜月| 性日韩欧美在线视频| 国产亚洲精品成人| 黄色欧美日韩| 午夜精品久久久久久久久久久久| 久久久久久欧美精品se一二三四| 午夜精品婷婷| 久久久久久免费精品| 久久艹精品视频| 影音先锋久久精品| 91国内在线视频| www.国产成人| 久久午夜av| 国产成人欧美在线观看| 中文字幕观看视频| 蜜桃视频一区二区三区 | 99久久香蕉| 亚洲白虎美女被爆操| 中文字幕乱视频| 亚欧洲精品视频在线观看| 亚洲欧美在线播放| 成人黄色免费网址| 天天操夜夜操国产精品| 成年无码av片在线| 日本午夜小视频| 麻豆成人精品| 91精品国产综合久久香蕉| 国产精品久久久久久免费| 国产成人精品www牛牛影视| 国产一区二区三区四区五区加勒比| 四虎影院在线播放| 国产人成一区二区三区影院| 自拍另类欧美| 97人澡人人添人人爽欧美| 欧美日韩综合视频网址| 亚洲无吗一区二区三区| 日韩视频在线直播| 日韩电影在线观看中文字幕 | 91av视频免费观看| 第四色在线一区二区| 亚洲人免费视频| 神马久久精品综合| 国产日本精品| 成人久久一区二区| 偷拍自拍在线| 亚洲日本一区二区三区| 一女被多男玩喷潮视频| 欧美黄色网络| 精品香蕉在线观看视频一| 亚洲女人毛茸茸高潮| 亚洲视频高清| 成人xxxxx| 日韩av成人| 亚洲欧美另类小说| 中文字幕永久视频| 精品少妇3p| 久久国产精品99国产精| 久久久久女人精品毛片九一| 国产激情一区二区三区四区 | 国产电影一区二区在线观看| 国产69精品久久久久99| 亚洲天堂中文字幕在线| 91社区在线播放| 伊人再见免费在线观看高清版| 色是在线视频| 欧美videossexotv100| eeuss中文字幕| 亚洲免费中文| 成人黄色片网站| wwwww在线观看免费视频| 亚洲va国产天堂va久久en| 天天操狠狠操夜夜操| 四虎影视精品| 国语自产精品视频在线看| 国产精品视频在线观看免费| 久久女同互慰一区二区三区| 日b视频免费观看| 99综合99| 日韩中文在线视频| 国产情侣小视频| 91麻豆免费观看| 久草视频国产在线| av成人综合| 欧美大尺度激情区在线播放| 国产精品无码免费播放| 亚洲国产精品二十页| 日韩手机在线观看视频| 精品人人人人| 亚洲3p在线观看| 内射后入在线观看一区| 一区二区三区在线视频播放| 久久久九九九热| 久久精品国内一区二区三区水蜜桃| 国产精品video| 国产精品免费播放| 色婷婷av一区二区三区gif| 91黄色免费视频| 亚洲在线日韩| 美日韩精品免费| 中文字幕这里只有精品| 亚洲毛片一区二区| 中文字幕视频网| 久久天堂av综合合色蜜桃网| 国产免费黄视频| 亚洲综合小说图片| 日韩美女视频免费看| 毛片免费在线观看| 欧美色手机在线观看| 一二三四国产精品| 激情五月播播久久久精品| 国产又黄又爽免费视频| 精品一区二区三区视频在线播放| 欧美成人三级视频网站| 亚洲精品久久久久久久久久 | www.五月婷婷.com| 国产精品毛片久久久久久| 一级黄色录像在线观看| 亚洲乱码电影| 国产乱码精品一区二区三区日韩精品| 国产白浆在线免费观看| 亚洲欧美日韩久久久久久 | 91麻豆精品国产91久久久久久 | 婷婷久久综合九色国产成人| 久久国产精品无码一级毛片| 日韩国产成人精品| 爱爱爱视频网站| 超碰在线成人| 日本免费在线精品| a黄色片在线观看| 精品成人一区二区三区四区| 偷偷操不一样的久久| 国产亚洲欧美激情| 午夜影院免费观看视频| 亚洲日本免费| 亚洲一区不卡在线| 99精品在免费线中文字幕网站一区| 91精品国产91久久久久久最新| 国产精品视频一区二区久久| 欧美一级片在线观看| 日韩毛片一区二区三区| 中文字幕中文字幕一区| 88av在线播放| 蜜臀va亚洲va欧美va天堂| 黄色片免费在线观看视频| 精品在线播放| 国产传媒欧美日韩| 国产精品字幕| 国色天香2019中文字幕在线观看| 韩国中文免费在线视频| 日韩精品自拍偷拍| 精品国产青草久久久久96| 亚洲一级片在线观看| 美女福利视频网| 97久久超碰精品国产| 欧洲在线免费视频| 视频一区二区中文字幕| www插插插无码视频网站| 热久久天天拍国产| 久久久久久久免费| 久久九九精品视频| 国产精品偷伦视频免费观看国产| 黄色在线免费观看网站| 欧美成人网在线| 高清美女视频一区| 日韩精品在线免费观看| 精品人妻一区二区三区浪潮在线| 在线免费不卡视频| 亚洲一区欧美在线| 亚洲欧美日韩一区| 人妻无码一区二区三区免费| 99精品欧美一区二区蜜桃免费 | 真实的国产乱xxxx在线91| 亚洲大片精品永久免费| 精品欧美一区二区久久久久| 中文字幕不卡的av| 欧美多人猛交狂配| ww亚洲ww在线观看国产| 欧美丰满熟妇bbb久久久| 黄网站免费久久| 波多野结衣xxxx| 日韩精品视频网| 日韩久久一级片| 一本色道久久综合亚洲精品高清| 国产欧美久久久久| 欧美99在线视频观看| 麻豆中文字幕在线观看| 999精品视频| 中文字幕99| 欧美激情偷拍自拍| 中文字幕一区二区三区四区五区六区 | 欧美日韩亚洲综合在线 | 日韩欧美国产三级电影视频| 91成人在线免费| 欧美日韩国产首页在线观看| 国产精品51麻豆cm传媒| 欧美午夜电影一区| 中文字幕久久久久| 欧美精品日韩精品| 亚洲一级在线播放| 69堂国产成人免费视频| 91影院在线播放| 91精品国产一区二区三区香蕉| 国产在成人精品线拍偷自揄拍| 欧美女孩性生活视频| 91片黄在线观看喷潮| 欧美一卡二卡在线| 性网爆门事件集合av| 欧美videofree性高清杂交| 欧美在线 | 亚洲| 亚洲精品美女在线观看| 免费一级在线观看| 尤物tv国产一区| 免费在线观看黄| 欧美日韩国产91| 免费看男女www网站入口在线| 68精品久久久久久欧美| 欧美性suv| 91精品综合视频| 国产精品丝袜在线播放| 欧美性天天影院| 水蜜桃精品av一区二区| 日韩精品福利片午夜免费观看| 欧美午夜免费影院| 久久国产乱子伦免费精品| 久久精品国产亚洲a| 九九九久久久久久久| 97aⅴ精品视频一二三区| 天天躁夜夜躁狠狠是什么心态| ...xxx性欧美| 奇米影视第四色777| 在线精品视频一区二区三四| 国产三级视频在线播放| 日韩av在线免费看| 日本美女在线中文版| 久久久久久久一| 国产一区二区三区四区五区3d| 99九九电视剧免费观看| 九九综合久久| 成人污网站在线观看| 久久国产日本精品| 国产一级免费大片| 久久亚洲捆绑美女| 久久久久久久久久网站| 色婷婷精品久久二区二区蜜臂av| 国产精品探花视频| 日韩av影视综合网| 黄av在线播放| 国产激情视频一区| 北条麻妃在线一区二区免费播放| 日日夜夜精品网站| 1024日韩| 国产精品999.| 国产偷国产偷精品高清尤物| 欧美三根一起进三p| 欧美性一区二区| 人妻一区二区三区四区| 久久艳片www.17c.com| 日本精品不卡| 国产另类自拍| 伊人久久大香线蕉综合四虎小说| 国产l精品国产亚洲区久久| 国产精品一区一区三区| 懂色av蜜桃av| 色悠悠久久综合| 人妻91麻豆一区二区三区| 久久久www成人免费精品| 高清电影一区| 鲁片一区二区三区| 国内精品久久久久久久影视麻豆 | 外国成人毛片| 少妇免费毛片久久久久久久久| 一区二区日韩免费看| 亚洲一区和二区| 亚洲免费观看高清完整版在线观看| 无码人妻精品一区二区| 日韩经典第一页| 国产无遮挡裸体视频在线观看| 99国产精品久久久久老师| 国产国产精品| 最新天堂在线视频| 亚洲国产经典视频| 69av视频在线观看| 亚洲天堂网在线观看| 深夜成人在线| 久久久福利视频| 亚洲男女自偷自拍| 搡老熟女老女人一区二区| 午夜精品久久久久99热蜜桃导演| 欧美极品少妇全裸体| www一区二区三区| 一区二区三区三区在线| 乱一区二区av| 2017亚洲天堂| 欧美日韩国产首页| 好吊日视频在线观看| 国产日本欧美在线观看| 久久高清免费| 五月六月丁香婷婷| 亚洲免费观看高清完整版在线观看 | 大地资源中文在线观看免费版| 国产99视频在线观看| 欧美色女视频| 亚洲成人福利在线| 最好看的中文字幕久久| 国产精品久久久久久久久毛片 | 日韩精品一区二区三区蜜臀 | 国产成人综合亚洲| 欧美一级淫片| 狠狠操狠狠干视频| 亚洲欧美一区二区久久| 性一交一乱一乱一视频| 午夜欧美大片免费观看| 九色精品国产蝌蚪| mm131国产精品| 亚洲制服欧美中文字幕中文字幕| 成人午夜福利视频| 欧美一级片在线播放| 成人一区二区| 久久久久久久久久久影视| 亚洲二区在线视频| 激情视频在线观看免费| 91久久精品美女| 亚洲国产精品第一区二区| 自拍偷拍视频亚洲| 欧美久久一区二区| xxx在线免费观看| 日本精品一区二区三区视频| 精品亚洲国产成人av制服丝袜| 精品一区二区三区四| 精品一区二区三区三区| 宅男噜噜噜66国产精品免费| 人人妻人人做人人爽| 国产日韩三级在线| 999久久久久| 欧美在线视频在线播放完整版免费观看| 日韩av片子| 国产白嫩美女无套久久| 精品视频1区2区3区| 丰满的护士2在线观看高清| 日韩高清av电影| 成人av网在线| 一级黄色片免费| 91po在线观看91精品国产性色 | 久久久久久久电影| 亚洲欧美激情在线观看| 国产精品美女免费看|