資訊傳遞、編碼和電腦表示(二)

來源:互聯網
上載者:User

數字電腦的世界就是0和1,所以一切要通過電腦進行計算和表達的資訊都必須編碼成0、1串。那麼電腦中如何表示阿拉伯數字,英文字母、希臘字母、拉丁字母、中文字元、數學符號等呢。下面講解電腦中如何對這些進行編碼,以及現實中編碼出現的曆史。

 

按照先後順序,電腦字元編碼先後出現的是 ASCII、Extended ASCII、MBCS編碼、UNICODE編碼。

 

一、Standard ASCII(標準ASCII)

 

ASCII (American Standard Code for Information Interchange),是美國標準資訊交換碼,由美國國家標準局(ANSI)制定的,它已被國際標準組織(ISO)定為國際標準,稱為ISO 646標準。ASCII碼適用於所有拉丁文字,它用7位位元進行編碼(其最高位(bit7)被用做同位位元),範圍是(0x00-0x7F),可以表示128種不同的符號。 其中包括了阿拉伯數字0-9、英文字母a-z和大些的A-Z、數學運算子號、括弧、標點、控制字元等。 這些已經滿足了最初的需求,下面是ASCII碼錶

 

 

註:這128個Code中(從0開始編號,0-127),有些是可視的【0x20(Space)-0x7E(~)】,有些是非可視的【0x00-0x1F和0x7F(DEL)】。非可視字元基本用於控制字元,例如0x07,如果你輸出到標準輸出,那麼電腦會發出“嘀”的響聲;0x0D表示斷行符號,0x0A表示換行,0x09表示Tab,等等。

 

 

二、Extended ASCII(擴充ASCII)

一個位元組(0x00-0xFF)可以表示256種含義,標準ASCII使用了低128種。 為了能表示更多字元,各廠商制定了很多種ASCII碼的擴充規範,於是形成了Extended ASCII,這不是標準ASCII的一部分。例如IBM定義的擴充編碼,裡面定義了很多的線條,主要用於進行文字形式的格式化顯示。裡面還包括了希臘字母和數學符號,以及帶重音號的拉丁字母。該編碼在字元終端下被廣泛使用。

 

 

該IBM擴充字元集被燒進無數顯示卡和印表機的ROM中,並被許多應用程式用於修飾其文字模式的顯示方式。不過,該字元集並沒有為所有使用拉丁字母表的西歐語言提供足夠多的帶重音字元,而且也不適用於Windows。Windows不需要圖形字元,因為它有一個完全圖形化的系統。

在Windows 1.0(1985年11月發行)中,Microsoft沒有完全放棄IBM擴充字元集,但它已退居第二重要位置。因為遵循了ANSI草案和ISO標準,純Windows字元集被稱作「ANSI字元集」。 ANSI草案和ISO標準最終成為ANSI/ISO 8859-1-1987,即「American National Standard for Information Processing-8-Bit Single-Byte Coded Graphic Character Sets-Part 1: Latin Alphabet No 1」,通常也簡寫為「Latin 1」。

這是在圖形介面中最廣泛使用的擴充,其中包含歐洲各國語言中最常用的非英文字母,但畢竟只有128個字元,某些語言中的某些字母沒有包含。如下表所示(編號為128~159的是一些控制字元,表中沒有列出):

 

 

小結:

1、從上面的講述看來,很明顯0x00-0x7F的位元組表示了一個確定的符號(根據ASCII碼錶),但是0x80-0xFF中某個數字對應的位元組,在IBM的擴充ASCII碼錶和Latin-1中,就有不同的含義。 例如,0xD7在IBM擴充碼中顯示的是“兩豎一橫”的符號,但是在Latin-1(ISO 8859-1)中卻是數學符號“×”。

Q:那麼電腦怎樣對待這樣的重碼情況呢,也就是將0xD7看成是“兩豎一橫”還是“×”?

A:答案是都可以。為瞭解決這個問題,需要引入碼錶(codepage)的概念。MS-DOS 3.3(1987年4月發行)向IBM PC使用者引進了內碼錶(code page)的概念,Windows也使用此概念。內碼錶定義了字元的映射代碼。最初的IBM字元集被稱作內碼錶437,或者「MS-DOS Latin US)。「MS-DOS Latin 1」的是內碼錶850,它用附加的帶重音字母代替了一些線形字元。其他內碼錶被其他語言定義。最低的128個代碼總是相同的;較高的128個代碼取決於定義內碼錶的語言。

 

2、亂碼的原因

Q:為什麼亂碼

A:顯示的亂碼就是因為實際含義和顯示的不一致。例如根據內碼錶437(IBM Extend ASCII)進行編碼,但是顯示的時候用內碼錶850(Latin-1)進行翻譯,就出現問題了。

 

 

本文引用了網路上的一些概念,並進行了歸結。如有不解,請搜尋ASCII 擴充碼,擷取更多的資料。

 

 

未完待續。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.