日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】刨根究底字符编码之三——字符编码的由来

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】刨根究底字符编码之三——字符编码的由来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符編碼的由來

?

一、為什么需要對字符進行編碼

1.

計算機一開始發明出來時是用來解決數字計算問題的,后來人們發現,計算機還可以做更多的事,例如文本處理。

但計算機其實挺“笨”的,它只“認識”010110111000…這樣由0和1兩個數字組成的二進制數字,這是因為計算機的底層硬件實現就是用電路的斷開和閉合兩種狀態來表示0和1兩個數字的。因此,計算機只可以直接存儲和處理二進制數字。

2.

為了在計算機上也能表示、存儲和處理像文字、符號等等之類的字符,就必須將這些字符轉換成二進制數字。

當然,肯定不是我們想怎么轉換就怎么轉換,否則就會造成同一段二進制數字在不同計算機上顯示出來的字符不一樣的情況,因此必須得定一個統一的標準進行轉換。

于是就設計出了進行這種轉換的標準——字符編碼標準。

?

二、EBCDIC碼與ASCII碼

1.

最開始設計出來的字符編碼標準是EBCDIC編碼標準。EBCDIC,是Extended Binary Coded Decimal Interchange Code(即擴展二進制編碼的十進制交換碼)的縮寫。

EBCDIC碼是由國際商用機器公司(即IBM)為大型機操作系統而開發設計的,于1964年推出。

在EBCDIC碼中,英文字母不是連續排列的,中間出現多次斷續,這帶來了一些困擾和麻煩。

因此,在后來IBM的個人計算機和工作站操作系統中并沒有采用EBCDIC碼,而是采用了晚于EBCDIC碼推出、且后來成為了英文字符編碼工業標準的ASCII編碼方案。

?

2.

ASCII碼(American Standard Code for Information Interchange美國信息交換標準碼),由美國國家標準學會ANSI(American National Standard Institute)于1968年正式制定。

之后,ASCII編碼標準又于1972年被ISO/IEC采用,制定為ISO/IEC 646標準(ISO,即國際標準化組織International Standardization Organization,成立于1946年;IEC,即國際電工技術委員會International Electrotechnical Commission,成立于1906年;ISO/IEC往往用來表示由這兩大國際組織聯合制定的標準)。因此,ISO/IEC 646(常簡稱為ISO 646)與ASCII指的是同一個編碼標準。

由于ASCII碼要晚于EBCDIC碼出現(網上也有文章說是ASCII碼要早于EBCDIC碼開始設計,但1968年ASCII碼才正式確定為標準),ASCII碼的編碼方式參照了EBCDIC碼,并吸取了其經驗教訓,將英文字母進行了連續排列,這方便了程序處理。

3.

ASCII編碼方案雖然不是最早出現的字符編碼方案,但目前卻是最基礎、最重要、應用最廣泛的字符編碼方案。

目前所通行的其他字符編碼方案,比如ISO-8859系列、GB系列(GB2312、GBK、GB18030、GB13000)、Big5、Unicode等等,均直接或間接兼容ASCII碼。

而像EBCDIC這樣與ASCII完全不兼容的編碼方案,基本上處于已淘汰或將要淘汰的境地。

?

三、ASCII字符編碼方案簡介

1.

ASCII碼使用七個二進制數字(即比特)來表示一個字符,總共表示128個字符(2^7 = 128,二進制編碼為0000 0000 ~ 0111 1111,對應的十進制就是0~127)。

由于目前計算機普遍采用8位作為一個字節來進行存取與處理,因此剩下最高位的那1比特一般為0,但有時在一些通訊系統中也被用作奇偶校驗位。

?

2.

ASCII字符集共計有128個字符(見上表),碼點編號(即字符編號)從0到127(二進制為從0000 0000到0111 1111,十六進制為從0x00到0x7F),二進制最高位都是0。其中:

1)0~31:不可顯示不可打印的控制字符或通訊專用字符,如0x07(BEL響鈴)會讓計算機發出嗶的一聲、0x00(NUL空,注意不是空格)通常用于指示字符串的結束、0x0D(CR回車)和0x0A(LF換行)用于指示打印機的打印針頭退到行首(即回車)并移到下一行(即換行)等;

注:將這些用于控制或通訊的控制字符或通訊專用字符稱之為“字符”,感覺上似乎有點怪,實際上這些所謂的“字符”表示的其實是一種動作或行為,因此才既不可顯示也不可能打印。

2)32:可顯示但不可打印的空格字符;

3)33~126:可顯示可打印字符,其中48~57為0-9的阿拉伯數字,65~90為26個大寫英文字母,97~122為26個小寫英文字母,其余的是一些標點符號、運算符號等;

4)127:不可顯示不可打印的控制字符DEL。

3.

這時候的字符編解碼非常簡單,比如若要將字符序列編碼為二進制流寫入存儲設備,只需要將該字符序列里的各個字符在ASCII字符集中的字符編號(即碼點編號),直接以一個二進制字節寫入存儲設備即可,字符編號就是字符編碼,中間不需要經過特別的編碼算法進行字符編號到字符編碼的轉換計算,更不存在所謂碼元序列到字節序列的轉換。

總結

以上是生活随笔為你收集整理的【转】刨根究底字符编码之三——字符编码的由来的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。