關於編碼問題:編碼 首先須要知道什麼是編碼爲何要編碼, 計算機只能存儲一個字節一個字節的二進制信息,因此須要把人可讀的這些文字用惟一的方式在計算機內部表示出來, 可是表示的方法不惟一;spa 例如英文字符 就那麼點 因此一個字節 也就是 8個二進制位就能給全部的進行編碼,最多能給256個符號編碼; 可是ASCII 編碼實際只使用了 7位 因此最多編碼 128個字符。code 可是漢字就不行了, 經常使用的漢字大概6000多個, 因此 至少須要兩個字節, 因此中國government給出了兩個字節的編碼方案, 叫作GBxxxx (國標的意思)orm 兩個字節16位 最多 有65536 個字符, 因此 給這些漢字用是足夠了,可是有個問題 如何讓GB碼和ASCII碼互相兼容, 即這65536 個字符裏面關於那些英文字符的編碼 在GB碼和ASCII碼中要一致htm 方法很簡單 要求全部最高位爲0的編碼表示的是ASCII碼, 最高位爲1的編碼是GB碼;ci 這樣實際最多就只能表示32768個漢字了;unicode 可是GB國標碼只能在中國用, 世界人民怎麼辦呢?世界有那麼多的語言,每種語言都應該有編碼 因此有了一個叫作unicode 統一編碼的東西出現了;Unicode是國際組織制定的能夠容納世界上全部文字和符號的字符編碼方案。Unicode用數字0-0x10FFFF來映射這些字符(見百度百科http://baike.baidu.com/view/40801.htm)get 固然最後還有一個咱們常常見到的UTF8編碼, 這個是什麼東西?io UTF全稱 是Unicode Transformation Format 即unicode 編碼的變形形式;字符編碼 unicode編碼是定長度的, 可是對於ASCII字符來說 有點浪費了, 能夠用一個字節表示 ASCII字符, 用多個字節表示 漢字什麼的, 這就是變長度編碼方式了, 那就須要對unicode編碼進行一些變形; UTF-8的定義: 0開頭 latin字符 10開頭 一個字符連續字節中的某一個 1111xxx 一個多字節字符的開始 前導1的個數表示字節個數 前導1後面緊跟一個0 漢字通常3個字節 unicode是統一編碼 utf8是對unicode的轉換編碼 unicode utf8 0xxxxxxx -> 0xxxxxxx latin 轉化成自身 00000yyy yyxxxxxx -> 110yyyyy 10xxxxxx 兩字節 轉化成 兩字節 zzzzyyyy yyxxxxxx->1110zzzz 10yyyyyy 10xxxxxx 兩字節轉化成三字節(通常漢字就是如此) 000wwwzz zzzzyyyy yyxxxxxx -> 11110www 10zzzzzz 10yyyyyy 10xxxxxx 三字節轉化成4字節 |