在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計算機編碼全解析(上)

jf_78858299 ? 來源:小余的自習(xí)室 ? 作者:小余的自習(xí)室 ? 2023-03-30 10:28 ? 次閱讀

前言

你是不是工作了很多年了,一直沒搞清楚計算機中的各種編碼規(guī)則,雖然平時都會使用,但是內(nèi)部機制原理一直都是之其然而不知其所以然,開發(fā)中也會經(jīng)常涉及到這塊內(nèi)容,但都沒有太多重視,這可能會讓有吃一些虧(出項目bug了),本著追本溯源的精神或是為了讓自己在少出血bug,小余今天就來聊聊這塊內(nèi)容。

目錄

1.字符集與字符編碼

首先要明確兩概念, 字符集 (charset)和 字符編碼 (encoding)。

字符集

字符集顧名思義: 很多字符的集合 。這些字符組成一套字符系統(tǒng),用來表達(dá)我們生活中各種含義,

比如0~9以及各種加減法等符號的集合,可以表示生活中的“數(shù)字集合”,不然1+1是什么計算機可不知道? 26個大小寫英文字母加上標(biāo)點符號就組成了“英文字符集“,這些字符集在英美人看來就組成了一套符號系統(tǒng),看到”I Love you“就知道什么意思了。 再比如我們新華字典中的所有漢字加上標(biāo)點符號就組成了“中文字符集”,這個字符集就組成了中文文字系統(tǒng)。看到“我愛你”也就知道什么意思了,可以對于不懂中文的老外來,因為沒有中文字符集,看到“我愛你”可就一臉懵逼了。

字符編碼

字符編碼 :言外之意就是 對字符進行編碼 ,那為什么要對字符編碼,其實字符編碼最終目的就是為了存儲或者傳輸。我們的計算機最早是用來提供算術(shù)功能的,和算盤功能類似,但是后來發(fā)現(xiàn)計算機可以做很多事情。 其中就包括存儲機制,如何存儲呢?假設(shè)“LOVE”這個單詞,我們使用數(shù)字1代表L,數(shù)字2代表O,數(shù)字3代表V,數(shù)字4代表E,將1234存儲在某個區(qū)域,這樣就可以知道這4個數(shù)字代表了“LOVE”,當(dāng)然實際LOVE有自己的字符表示,這里使用1234作為例講解。

字符編碼的四個步驟

要在計算機中建立一個“字符編碼模型”,需要四個步驟:

  • 1.要有一個 字符庫 ,確定這些字符庫足夠表意。比如ASCII字符集,已經(jīng)足夠表示英文系統(tǒng),但是不能表達(dá)中文,于是有了GB2312字符集。
    1. 第一層編碼 :給每個字符選個數(shù)字(Code Point),比如ASCII碼中,用65表示“A”,97表示“a”。
    1. 第二層編碼 :確定表示字符的二進制位數(shù)(8位,16位,32位)。ASCII碼使用7位來表示,因為當(dāng)時制定者覺得7位以及夠用了,DBCS(雙字節(jié)字符集)使用了16位。
  • 4.第三層編碼: 確定字符的二進制存儲方式(大端還是小端)。比如X86機器使用小端。

一個字符一般只有一種編碼格式,當(dāng)字符集中的字符不夠用時,會增加一些新的字符,使用新的字符編碼格式,形成新的字符集。所以 有時候字符集和字符編碼的概念是很模糊的,并不嚴(yán)格區(qū)分 。比如ASCII碼既可以成為一段“字符集”,也可以稱為一種“編碼格式”。

也有一些字符集有多種編碼格式:如Unicode,其中UTF-8和UTF-16等都是其編碼格式,這個后面是詳細(xì)講解。

2.常用計算機編碼

1.ASCII碼

ASCII碼全稱“American Standard Code for Information Interchange”, 美國標(biāo)準(zhǔn)信息交互碼 ,由美國標(biāo)準(zhǔn)委員會(American Standards Association,簡稱ASA)制定,后來該協(xié)會改組為“美國國家標(biāo)準(zhǔn)學(xué)會”(American National Standard Institute , 簡稱ANSI ),所以很多資料上說ASCII碼是由ANSI指定的。

ASCII碼是從電報碼發(fā)展過來的,最早使用在7-bits電傳打印機上。1960年,ASA將ASCII標(biāo)準(zhǔn)化,于1963年發(fā)布第一版,1967年再發(fā)布一次大的版本,這個標(biāo)準(zhǔn)版本,也是一個7-bit碼,包含33個非打印字符(現(xiàn)在許多已經(jīng)廢棄了),95個打印字符(包含空格符),編碼范圍為0~127。

圖片

然而ASCII碼只是美國的標(biāo)準(zhǔn),對于其他國家,如中文,日文,韓文等大多使用的是象形文字,127個字符遠(yuǎn)遠(yuǎn)無法表達(dá)中國的漢字文化,于是各國在ASCII的基礎(chǔ)上制定了自己的字符集,但是 本質(zhì)上都兼容ASCII ,如中國大陸的GK2312,臺灣省的(Big5)小日子的JIS等編碼規(guī)范。

2.EASCII

其實標(biāo)準(zhǔn)的ASCII就是7-bit的編碼(8字節(jié),但是最高位沒有編碼),后來使用過程中發(fā)現(xiàn)127個字符有點不夠用,于是將ASCII進行了擴展,叫做EASCII或者h(yuǎn)igh-ASCII,8位的,能表示256個字符。

由于不同的應(yīng)用場景,有不同的編碼,有IBM的Extend ASCII和ANSI的Extend ASCII。 去wikipedia上會發(fā)現(xiàn)有好多種ASCII的標(biāo)準(zhǔn),大類就是IBM和ANSI(Windows的,微軟很強勢,ANSI的東西感覺就是給他們家用的)兩種,其實都是為了給自家系統(tǒng)用的,隨著IBM操作系統(tǒng)的墜落,IBM的擴展ASCII也根本上淡出視野。

擴展的ASCII的產(chǎn)生

搭載Windows系統(tǒng)的計算機進入歐洲之后,發(fā)現(xiàn)標(biāo)準(zhǔn)的ASCII并不能滿足歐洲這些拉丁語族國家的語言表意,決定對其進行擴展。同為印歐語系,發(fā)現(xiàn)擴展起來也沒那么難,總共256個值就包括所有了。只需要將原來的7-bit擴展為8-bit,將原來的標(biāo)準(zhǔn)ASCII保留,第一位使用0來表示。將擴展的字符第一位使用1來表示

擴展ASCII的組成

具體來講,擴展后的ASCII碼表可以看成 由三部分組成

  • 第一部分 :由00H到1FH共32個,一般用來通訊或作為控制之用。有些可以顯示在屏幕上,有些則不能顯示,但能看到其效果(如換行、退格)
  • 第二部分 :是由20H到7FH共96個,這95個字符是用來表示阿拉伯?dāng)?shù)字、英文字母大小寫和下劃線、括號等符號,都可以顯示在屏幕上.
  • 第三部分 :由80H到0FFH共128個字符,一般稱為"擴充字符",這128個擴充字符是由IBM制定的,并非標(biāo)準(zhǔn)的ASCII碼.這些字符是用來表示框線、音標(biāo)和其它歐洲非英語系的字母。

圖片

3.ISO-8859

由于每個國家以及公司對編碼的各自定制化,導(dǎo)致 同一個字符在不同電腦之間由于編碼的不一致,顯示的結(jié)果也不一樣,現(xiàn)象就是亂碼 。 那為了解決這個問題,ISO組織統(tǒng)一了一套標(biāo)準(zhǔn)的字符集。

與ASCII、EASCII字符編碼方案只包括單個獨立的字符集不同,ISO/IEC 8859字符編碼方案包括了一組字符集, 或者說ISO/IEC 8859相當(dāng)于是一組字符集的總稱,其內(nèi)共包含了15個字符集, 即ISO/IEC 8859-n,n=1、2、3…15、16,其中12未定義,所以實際上共15個。

這15個字符集,大致上包括了歐洲各國所使用到的字符(甚至還包括一些外來語字符),而且每一個字符集的補充擴展部分(即除了兼容ASCII字符之外的部分),都只實際使用了0xA00xFF(十進制為160255)這96個編碼,而0x800x9F(十進制為128159)這32個編碼并未實際定義字符。

其中,目前使用得最為普遍的是ISO/IEC 8859-1字符集,收錄了西歐常用字符(包括德法兩國的字母)。

ISO/IEC 8859-1往往簡稱為ISO 8859-1,而且還有一個稱之為Latin-1(也寫作Latin1)的別名,即:ISO/IEC 8859-1 = ISO 8859-1 = Latin-1 = Latin1。

圖片

從ISO 8859-1到ISO 8859-16各自所收錄的字符分別如下:

ISO/IEC 8859-1 (Latin-1) - 西歐語言
ISO/IEC 8859-2 (Latin-2) - 中歐語言
ISO/IEC 8859-3 (Latin-3) - 南歐語言。世界語也可用此字符集顯示。
ISO/IEC 8859-4 (Latin-4) - 北歐語言
ISO/IEC 8859-5 (Cyrillic) - 斯拉夫語言
ISO/IEC 8859-6 (Arabic) - 阿拉伯語
ISO/IEC 8859-7 (Greek) - 希臘語
ISO/IEC 8859-8 (Hebrew) - 希伯來語(視覺順序)
ISO 8859-8-I - 希伯來語(邏輯順序)
ISO/IEC 8859-9(Latin-5 或 Turkish)- 它把Latin-1的冰島語字母換走,加入土耳其語字母。
ISO/IEC 8859-10(Latin-6 或 Nordic)- 北日耳曼語支,用來代替Latin-4ISO/IEC 8859-11 (Thai) - 泰語,從泰國的 TIS620 標(biāo)準(zhǔn)字集演化而來。
ISO/IEC 8859-13(Latin-7 或 Baltic Rim)- 波羅的語族
ISO/IEC 8859-14(Latin-8 或 Celtic)- 凱爾特語族
ISO/IEC 8859-15 (Latin-9) - 西歐語言,加入Latin-1欠缺的芬蘭語字母和大寫法語重音字母,以及歐元(€)符號。
ISO/IEC 8859-16 (Latin-10) - 東南歐語言。主要供羅馬尼亞語使用,并加入歐元符號。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7494

    瀏覽量

    87961
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    942

    瀏覽量

    54831
  • BUG
    BUG
    +關(guān)注

    關(guān)注

    0

    文章

    155

    瀏覽量

    15670
收藏 人收藏

    評論

    相關(guān)推薦

    計算機與網(wǎng)絡(luò)技術(shù)基礎(chǔ)

    計算機與網(wǎng)絡(luò)技術(shù)基礎(chǔ)了解計算機網(wǎng)絡(luò)的形成與發(fā)展過程  掌握計算機網(wǎng)絡(luò)的定義、分類、功能和典型應(yīng)用  掌握計算機網(wǎng)絡(luò)的組成結(jié)構(gòu)  了解
    發(fā)表于 12-07 13:36

    計算機與第三方設(shè)備通信時,常用的計算機編碼

    計算機與第三方設(shè)備通信時,常用的計算機編碼
    發(fā)表于 07-10 13:06

    什么是計算機系統(tǒng)、計算機硬件和計算機軟件?

    第一章 計算機系統(tǒng)概論1. 什么是計算機系統(tǒng)、計算機硬件和計算機軟件?硬件和軟件哪個更重要?解:P3計算機系統(tǒng):由
    發(fā)表于 07-22 09:06

    計算機運算速度是指什么

    計算機運算速度是指什么?按傳輸介質(zhì)分類,計算機網(wǎng)絡(luò)可分為哪幾種?使用16位二進制編碼表示聲音與使用8位二進制編碼表示聲音的效果有何不同?
    發(fā)表于 10-19 09:05

    什么是程序?什么是計算機

    什么是程序?程序(Program)流程、議程、行程、…為了完成某項任務(wù),解決某個問題需要執(zhí)行的一系列步驟計算機程序為了完成某項任務(wù),解決某個問題由計算機執(zhí)行的一系列指令(步驟)什么是計算機
    發(fā)表于 11-23 09:02

    計算機應(yīng)用基礎(chǔ)教案

    介紹什么是計算機計算機的特點,計算機的應(yīng)用與發(fā)展:什么是計算機計算機的發(fā)展;計算機的分類;
    發(fā)表于 09-25 12:45 ?0次下載

    計算機應(yīng)用基礎(chǔ)課程

    計算機的分類、特點及應(yīng)用領(lǐng)域 計算機的進位計數(shù)制 計算機的信息編碼標(biāo)準(zhǔn)
    發(fā)表于 05-15 09:57 ?0次下載

    用SD卡設(shè)計8086計算機的硬盤

    介紹了8086計算機的體系架構(gòu),設(shè)計了8086計算機與SD卡連接的硬件接口,并使用軟件和硬件相結(jié)合的調(diào)試方法,可快速調(diào)試驗證SD卡的功能.通過FPGA的驗證,SD卡作為8086
    發(fā)表于 11-09 16:47 ?66次下載

    計算機尋址方式解析

    計算機尋址方式解析 尋址方式 就是尋找操作數(shù)地址的方式,解決的是如何在指令中表示一個操作數(shù)的地址。 形式地址 :在指令中出現(xiàn)的操作數(shù)地址
    發(fā)表于 04-15 11:22 ?6813次閱讀

    2002()《計算機原理》試卷

    2002()《計算機原理》試卷
    發(fā)表于 04-15 13:52 ?583次閱讀

    從5個方面來解析計算機中的字符編碼概念

    字符編碼計算機編程中不可回避的問題,不管你用 Python2 還是 Python3,亦或是 C++, Java 等,我都覺得非常有必要厘清計算機中的字符編碼概念。
    的頭像 發(fā)表于 01-16 09:08 ?7936次閱讀
    從5個方面來<b class='flag-5'>解析</b><b class='flag-5'>計算機</b>中的字符<b class='flag-5'>編碼</b>概念

    計算機算術(shù)運算實現(xiàn)原理

    計算機算術(shù)運算實現(xiàn)原理解。
    發(fā)表于 03-26 14:04 ?5次下載

    比量子計算機更容易構(gòu)建的新的計算機制造方法 用液晶構(gòu)建計算機

    兩位科學(xué)家在最新一期《科學(xué)進展》雜志撰文提出了一種新的計算機制造方法:用液晶構(gòu)建計算機,這種計算機將使用分子的朝向來存儲數(shù)據(jù)。在液晶計算機
    的頭像 發(fā)表于 08-24 19:58 ?1309次閱讀

    計算機編碼解析(中)

    你是不是工作了很多年了,一直沒搞清楚計算機中的各種編碼規(guī)則,雖然平時都會使用,但是內(nèi)部機制原理一直都是之其然而不知其所以然,開發(fā)中也會經(jīng)常涉及到這塊內(nèi)容,但都沒有太多重視,這可能會讓有吃一些虧(出項目bug了),本著追本溯源的精神或是為了讓自己在少出血bug
    的頭像 發(fā)表于 03-30 10:28 ?1190次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>編碼</b><b class='flag-5'>全</b><b class='flag-5'>解析</b>(中)

    計算機編碼解析(下)

    你是不是工作了很多年了,一直沒搞清楚計算機中的各種編碼規(guī)則,雖然平時都會使用,但是內(nèi)部機制原理一直都是之其然而不知其所以然,開發(fā)中也會經(jīng)常涉及到這塊內(nèi)容,但都沒有太多重視,這可能會讓有吃一些虧(出項目bug了),本著追本溯源的精神或是為了讓自己在少出血bug
    的頭像 發(fā)表于 03-30 10:29 ?995次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>編碼</b><b class='flag-5'>全</b><b class='flag-5'>解析</b>(下)
    主站蜘蛛池模板: 特级毛片a级毛免费播放| 欧美在线观看一区二区三| 欧美日一区| 亚洲情a成黄在线观看| 26uuu欧美性色| 婷婷久久综合九色综合九七| 韩国激情啪啪| 久久国产乱子伦精品免费午夜| 国产精品成人免费观看| 免费番茄社区性色大片| 欧美特黄一免在线观看| 美女扒开尿口让男人30视频| 欧美精品一区在线看| 爽天天天天天天天| 国产一区中文字幕| 精品一级毛片| 成年片色大黄全免费| 天天摸天天做天天爽水多| 成年网站在线播放| 免费视频现线观看| 日日噜噜夜夜狠狠久久丁香| 午夜免费影视| 激情三级视频| 国产视频日本| 欧美激情伊人| 日本色午夜| 免费看片免| 性欧美f| 2021国内精品久久久久影院| 又色又爽的视频| 美女网站视频色| 69精品久久久久| 日韩特黄毛片| 欧美黄一片| 凸输偷窥xxxx自由视频| 新版天堂中文资源8在线| 饥渴少妇videos| videosgratis乱色欧美野外| 亚洲一本高清| 国产一级特黄aa大片爽爽| 91天天操|