(圖片來自網絡)web
1、正則表達式
字符編碼是計算機世界裏最基礎、最重要的一個主題之一。不過,在計算機教材中卻每每浮光掠影般地草草帶過,甚至連一本專門進行深刻介紹的著做都找不到(對這一點我一直很困惑,爲何就沒有哪位大牛對這個如此基礎、重要而又如此容易讓人困惑的主題寫一本專著予以介紹呢)。編程
而在編程實踐中,若是不發揚死磕到底的精神將字符編碼問題的前因後果、前世此生完全搞清楚,那麼它終將會像幽靈同樣揮之不去,致使時不時地被各類與字符編碼相關的「靈異」事件折磨得死去活來。網絡
本人正是在經受了字符編碼所帶來的種種使人崩潰的痛苦以後,纔在痛定思痛之餘,最終痛下決心,誓要將它刨根究底。編程語言
2、編碼
字符編碼的基礎性、重要性,主要體如今它涉及面廣。向下涉及到計算機的底層技術,甚至是硬件實現;向上幾乎跟全部的操做系統、編程語言、應用程序都密切相關。spa
所以,要想真正搞明白字符編碼問題,必須得從計算機的基本概念——位、字節、字等等開始,再結合不一樣的系統環境與編程環境,進行具體分析。操作系統
3、code
相似於字符編碼這樣基礎、重要、應用普遍而又特別容易讓人困惑的主題還有字節序(即大小端表示)、正則表達式以及浮點數實現、日期時間處理等等。其中,字節序、正則表達式跟字符編碼的關係又密切相關,尤爲是字節序,直接影響字符編碼的字節序列。而因爲正則表達式主要用於在字符串中查找、提取字符或子字符串,要想真正理解正則表達式,也離不開對字符編碼的深刻理解。orm
基於此,本人準備將本身對字符編碼(包括字節序)與正則表達式進行刨根究底後的一些心得體會寫成兩個系列文章,一方面整理一下本身的思路以備忘,另外一方面也真心但願可以起到拋磚引玉的做用。
(圖片來自網絡)
4、
下面是字符編碼系列文章將會涉及到的內容:
一)關鍵術語解釋:位、字節、字與字長、字符集、編碼、解碼、字符編碼、現代字符編碼模型
二)字符編碼的由來
三)ASCII字符編碼方案
四)擴展ASCII字符編碼方案EASCII(Extended ASCII)以及ISO/IEC 8859字符編碼方案
五)漢字編碼方案:GB23十二、GBK、GB18030、GB13000、全角與半角、CJK中日韓統一表意文字
六)漢字編碼中區位碼、國標碼(交換碼)、內碼(機內碼)、外碼(輸入碼)、字形碼(輸出碼)的區別及關係
七)ANSI編碼
八)代碼頁(Code Page)、微軟與ANSI代碼頁
九)Unicode編碼方案的面世
十)Unicode字符集概述
十一)字符編碼系統(字符編碼模型)的變化、字節序
十二)Unicode字符集的編碼方式:碼點、碼元、UTF-八、UTF-1六、UTF-32
十三)一樣存在多字節編碼,爲何說UTF-8沒有字節序的問題,而UTF-1六、UTF-32卻有?
十四)微軟爲何跟聯通有仇——Windows記事本的字符編碼方式
十五)Windows記事本的四種編碼方式(ANSI、Unicode、Unicode big endian、UTF-8)有何區別?
十六)深刻剖析奇葩的Python字符編碼
十七)Vim中的字符編碼問題
十八)Unicode常見問題解答
十九)總結