欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

編碼史記

 更新時間:2012年04月21日 13:39:59   作者:  
昨天聽了一個同事的編碼講座,很精彩。想起了要寫這個文章分享一下各種編碼是如何產(chǎn)生的
字符編碼的故事
字符是什么
字符是什么?就是有意義的圖形,比如a,中等。在不同的國家代表不同的意思。

但是在計算機世界中只有0和1,好了,如何用0和1將這些字符表示出來呢?這就是編碼存在的意義。

編碼一點也不高深,就是一個計算機的01和字符ab的簡單映射。

于是故事開始了...
很久很久以前,計算機世界只有美國人。美國人的文字造詣很低的,他們的所有文字就只有24個字母,甚至加上大寫和小寫,阿拉伯數(shù)字,計算機中的控制符(回車啥的)都不超過256個(只有127個)。于是,對于他們來說,很自然,那么計算機中用8位就可以表示他們的所有字符了吧。于是他們將8位稱作一個字節(jié),計算機的8位表示的每個數(shù)字對應(yīng)了一個英文字符,畫了一張表(ASCII碼表)。最早的編碼AscII碼出現(xiàn)了。

歐洲人出場了。歐洲是有好多個國家的,他們的每個國家也都有自己的文字,比如拉丁文,希臘文等。怎么辦呢?于是想到,你美國人指定的ASCII碼表里面不是只有127個字符嗎,后面128-255的字符不是說待定嗎,好吧,我們就不客氣了。于是歐洲人就將各種奇怪的語言塞入127后面的字符中,形成了一系列的ISO 8859字符集。比如希臘文塞入ASCII,就形成了ISO/IEC 8859-7,西歐語種塞入ASCII就形成了ISO/IEC 8859-1,ISO/IEC 8859-1也叫做latin-1。(對,就是mysql里面經(jīng)常見到的編碼)

下面是ISO 8859現(xiàn)有的15個字符集

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-4。
ISO/IEC 8859-11 (Thai) - 泰語,從泰國的 TIS620 標準字集演化而來。
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) - 東南歐語言。主要供羅馬尼亞語使用,并加入歐元符號。


接著偉大的中國人也開始使用上電腦了。中文可不得了,文字博大精深,字符遠遠超過了256個。所以我們無法使用ASCII的擴展了。怎么辦呢? 1981年的時候,國家派一批人來做了這個事情,他們統(tǒng)計出所有的中文大概有6000多個字符(后來證明這些人的水品也是有限,好多字符都沒有搜出來,于是就有了多種的中文編碼),用兩個字節(jié)(16bit)來表示,16bit能表示的是65536個字符,太夠了。我們將16bit分為前8bit和后8bit
如果前8bit小于127(英文ASCII),那么這個8bit就是表示英文
如果前8bit大于127,那么這8bit和后面的8bit合起來表示一個中文
GB是啥意思?國標。

好了,后來某些領(lǐng)導(dǎo)發(fā)現(xiàn),他的名字沒法編碼了,這個問題出來了。6000個漢字還不足以囊括所有中文,國家在1995年又組織了一批人,繼續(xù)搜羅一些生僻字,一共搜集出了21886個漢字和字符,形成了GBK編碼,GBK編碼向下兼容GB2312。

K是啥意思?擴展。

再后來發(fā)現(xiàn)了,一些滿文,蒙古文啥的少數(shù)名族的語言沒有編輯到GBK中,繼續(xù)編輯收錄,形成了GB18030編碼。

中國臺灣的人民當然不能使用大陸編輯使用的GBXX系列編碼了,于是他們自己搞了一套BIG5中文編碼,收錄了13060個漢字和字符。但是這里要注意,BIG5的編碼映射表和GBXX系列的就完全不一樣了,比如同一個“中”字,在BIG5和GB2312中就是兩個完全不同的字節(jié)。這里就會有亂碼出現(xiàn)了,比如("陶喆"和"陶吉吉"),各種簡體中文和繁體文的轉(zhuǎn)碼工具就出現(xiàn)了。
BIG5是什么意思?
五種中文套裝軟體:文書處理,資料庫,試算表,通訊,繪圖。大致的意思是這套編碼主要使用于這5個領(lǐng)域

各個國家使用各個國家自己的編碼有沒有很繁瑣?于是大家很期盼有一種統(tǒng)一的編碼形式出現(xiàn)。Unicode編碼出現(xiàn)了。Unicode使用的通用的字符集叫做UCS。這個字符集就是一個大的字符空間,每個語種都在這個字符空間內(nèi)劃分一段領(lǐng)域。現(xiàn)在應(yīng)用的UCS是UCS-2,意思就是不管是英文中文,統(tǒng)一使用兩個字節(jié)(16bit)來進行字符分配。UCS-2字符集可以表示216(即65536)個字符。已經(jīng)基本滿足世界上所有語言了。如果不夠怎么辦?已經(jīng)有預(yù)定方案UCS-4(用4個字節(jié)表示一個字符)。

切記:UTFXX是Unicode的具體實現(xiàn)方式。
UTF-16是Unicode最基本的實現(xiàn)。Unicode使用16bit表示一個字符,UTF-16就是直接將字符集的映射搬過來而已。

本來這樣就已經(jīng)很美好了,但是美國人又不干了。憑什么每個英語字符要占用2個字節(jié)?憑什么占用了我們的帶寬和CPU?于是一幫英語體系的外國人討論出了UTF-8這種字符編碼。
UTF-8這種編碼是怎么回事呢?
英文字符,和ASCII碼一樣,占用一個字節(jié)
其他語種,每種語種分配一個模板,這個模板有16bit,24bit,甚至還有32bit的。各個語種根據(jù)這個模板,將自己的語言轉(zhuǎn)化成模板要求的編碼(UTF-8)


這里演示一個中文字“漢”
比如中文分到的模板是1110xxxx 10yyyyyy 10zzzzzz
漢字的Unicode編碼是0x6C49,二進制是0110 1100 0100 1001
將這個二進制按照模板的x,y,z順序插入
得到11100110 10110001 10001001 就是E6 B1 89


好了…大家看出這個對中文有什么不好的嗎?原先一個中文使用UTF-16只需要兩個字節(jié),但是使用UTF-8卻需要3個字節(jié),如果一個網(wǎng)頁有1w個中文字,那么我們就需要多傳輸1w個字節(jié),帶寬?。?! 現(xiàn)在就明白了,為什么國內(nèi)一些網(wǎng)站,比如sina,它的編碼規(guī)則是使用GBK了吧!

下面再說一下很多編輯器的自動編碼匹配的問題。編輯器會檢查出你輸入的字符是UTF-8還是GBK,基本根據(jù)的就是這個UTF-8模板,如果符合模板,就會判斷是UTF-8。很多文章說的txt中輸入“聯(lián)通”存為GBK編碼再打開會出現(xiàn)亂碼就是這個原因?qū)е碌摹?
具體請看這篇文章

還有一種ANSI是什么呢?windows內(nèi)核是使用UTF-16編寫的,但是頁面上展示的語言是根據(jù)系統(tǒng)設(shè)置的“語言”來展示的。ANSI就是windows系統(tǒng)根據(jù)你設(shè)置的語言環(huán)境而進行自動變化的一種編碼。比如在中文windows系統(tǒng)下,ANSI就代表GBK編碼,日文操作系統(tǒng)下就代表JIS編碼。

參考資料

字符編碼詳解及由來
字符集和字符編碼

相關(guān)文章

  • win10環(huán)境下使用Hyper-V進行虛擬機創(chuàng)建的教程(圖解)

    win10環(huán)境下使用Hyper-V進行虛擬機創(chuàng)建的教程(圖解)

    這篇文章主要介紹了win10環(huán)境下使用Hyper-V進行虛擬機創(chuàng)建的教程,本文圖文詳解給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • SecureCRT的下載、安裝詳細過程

    SecureCRT的下載、安裝詳細過程

    SecureCRT是一款支持SSH的終端仿真程序,在今后的工作和學(xué)習(xí)中會經(jīng)常的用到用來連接linux服務(wù)器。本文重點給大家介紹SecureCRT的下載、安裝詳細過程,感興趣的朋友一起看看吧
    2021-11-11
  • Web Jmeter–接口測試工具詳解

    Web Jmeter–接口測試工具詳解

    本文主要介紹Web Jmeter接口測試工具,這里整理了詳細的資料來說明Jmeter 的使用,有需要的小伙伴可以參考下
    2016-09-09
  • github pull最新代碼實現(xiàn)方法

    github pull最新代碼實現(xiàn)方法

    本文主要介紹 github pull最新代碼的資料,這里對 github pull最新代碼做了詳細流程介紹,有需要的小伙伴可以參考下
    2016-09-09
  • prometheus安裝和使用過程

    prometheus安裝和使用過程

    Prometheus是一個開源的系統(tǒng)監(jiān)控和報警系統(tǒng),通常會搭配prometheus進行監(jiān)控,同時也支持多種exporter采集數(shù)據(jù),還支持pushgateway進行數(shù)據(jù)上報,Prometheus性能足夠支撐上萬臺規(guī)模的集群,這篇文章主要介紹了prometheus安裝和使用記錄,需要的朋友可以參考下
    2023-06-06
  • 將來會是Python、Java、Golang三足鼎立的局面嗎

    將來會是Python、Java、Golang三足鼎立的局面嗎

    python的優(yōu)勢在于數(shù)據(jù)處理和人工智能等方向,所以go只可能吞噬Java的份額,很難撼動Python的奶酪,所以將來會是Python、Java、Golang三足鼎立的局面嗎
    2019-04-04
  • Python和Go成為2019年最受歡迎的黑客工具(推薦)

    Python和Go成為2019年最受歡迎的黑客工具(推薦)

    這篇文章主要介紹了Python和Go成為2019年最受歡迎的黑客工具,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 好玩的vbs小程序之關(guān)機功能

    好玩的vbs小程序之關(guān)機功能

    這篇文章主要介紹了好玩的vbs小程序之關(guān)機功能,非常有趣,感興趣的朋友跟隨小編一起看看吧
    2019-09-09
  • 詳解Git.gitignore開發(fā)必備建議收藏

    詳解Git.gitignore開發(fā)必備建議收藏

    這篇文章主要介紹了Git.gitignore的全面詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • idea自帶的數(shù)據(jù)庫可視化工具的使用

    idea自帶的數(shù)據(jù)庫可視化工具的使用

    開發(fā)Java應(yīng)用程序,作為明星工具IntelliJ IDEA當然是首選,本文主要介紹IDEA下自帶的數(shù)據(jù)庫可視化工具,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09

最新評論