1.總述
ascii:1967誕生的只有128個拉丁字母的編碼方式,gb2312是乙個漢化的ascii,unicode是1990推出的全球編碼標準。utf和gbk都是基於unicode的實現,gbk是漢化的utf,二者要互通都必須先轉為unicode。
2.編年史
1967:ascii(american standard code for information interchange)存寫和執行一體,美國推出世界推行,一共128字元。相當於最簡單的身份證,只有姓名和籍貫。
1981:gb2312又稱為區位碼,雖然ascii通用,但是大陸無法推廣,認識英語的畢竟少數人。精英使用ascii之後,模仿ascii在華語區搞出了gb2312。相當於搞出了中國自己的身份證。
1990:unicode(全名unicode character set),簡寫ucs。世界各國都搞出了自己的編碼,不同工具訪問不同國家的資源就出現了亂碼,美國推出的unicode,把各國的編碼都塞了進去。相當於搞出了世界通行的護照標準。
1990:utf(unicode transformation format,簡稱為 utf),unicode每個位元組占用的資源太多,不便於儲存和傳輸。類似於依據護照標準搞出了使用最廣的護照。
1995:gbk是中國基於unicode標準,做了本土化之後的產品,不考慮國際化,沒有特殊字元時,計算、傳輸效率等高很多。好比中國在自己的護照加了nfc等等。
3.戰爭史
ascii:美國的第一代產品,西方世界使用拼寫語言的國家統統被攻占。
gb2312:漢語屬於非拼寫類,不適合用ascii,本土化之後就是gb2312,那段時間有些大佬就是賣漢卡起家的。漢卡就是用來做編碼解碼的。
unicode:美國把各國類似於gb2312的東西,全部柔和在一起的產品。世界通行的標準。
utf:基於unicode標準的實現,相當於美國提供了生產護照的一整套流水線。
gbk:基於unicode標準的實現,中國做了自己生產護照的一整套流水線。
4.彩蛋
bom:大端和小端之爭就是乙個習慣問題,byte order mark用於解決這個問題。**方向是乙個同源但不同解決方案的問題,**有靠左有靠右,但是最後會歸於同乙個方向,因為和別人不同方向會遇到更大阻力。計算機**總是習慣於用標誌位解決這一類問題
編碼:公司軟要求utf-8格式,這個美國定的,現在的各類編譯器也基本是他們做的,考慮統一性原則都用utf-8,編譯時被錯誤解碼的概率小。
編碼 解碼 中文編譯碼
字串和字符集的關係 字串是python程式的一種格式 位元組串是網路傳輸的一種形式 字串和位元組串轉換 字串 str encode 位元組串 bytes 位元組串 bytes decode 字串 str ascii字符集是utf 8字符集的前128位字元,可以說ascii字符集是utf 8字符集的子...
js編碼 解碼
js對文字進行編碼涉及3個函式 escape,encodeuri,encodeuricomponent,相應3個解碼函式 unescape,decodeuri,decodeuricomponent 1 傳遞引數時需要使用encodeuricomponent,這樣組合的url才不會被 等特殊字元截斷。...
JS 編碼解碼
encodeuri 函式可把字串作為 uri 進行編碼。encodeuri uristring 引數 描述uristring 必需。乙個字串,含有 uri 或其他要編碼的文字。uristring 的副本,其中的某些字元將被十六進製制的轉義序列進行替換。該方法不會對 ascii 字母和數字進行編碼,也...