一直容易遺忘,遂做個筆記。
ansi編碼是一種對ascii碼的拓展:ansi編碼用0x00~0x7f (即十進位制下的0到127)範圍的1 個位元組來表示 1 個英文本元,超出乙個位元組的 0x80~0xffff 範圍來表示其他語言的其他字元。也就是說,ansi碼僅在前128(0-127)個與ascii碼相同,之後的字元全是某個國家語言的所有字元。值得注意的是,兩個位元組最多可以儲存的字元數目是2的16次方,即65536個字元,這對於乙個語言的字元來說,絕對夠了。還有ansi編碼其實包括很多編碼:中國制定了gb2312編碼,用來把中文編進去另外,日本把日文編到shift_jis裡,南韓把韓文編到euc-kr裡,各國有各國的標準。受制於當時的條件,不同語言之間的ansi碼之間不能互相轉換,這就會導致在多語言混合的文字中會有亂碼。結論
為了解決不同國家ansi編碼的衝突問題,unicode應運而生:如果全世界每乙個符號都給予乙個獨一無二的編碼,那麼亂碼問題就會消失。這就是unicode,就像它的名字都表示的,這是一種所有符號的編碼。
unicode標準也在不斷發展,但最常用的是用兩個位元組表示乙個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式語言都直接支援unicode。但是問題在於,原本可以用乙個位元組儲存的英文本母在unicode裡面必須存兩個位元組(規則就是在原來英文本母對應ascii碼前面補0),這就產生了浪費。那麼有沒有一種既能消除亂碼,又能避免浪費的編碼方式呢?答案就是utf-8!
這是一種變長的編碼方式:它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度,當字元在ascii碼的範圍時,就用乙個位元組表示,保留了ascii字元乙個位元組的編碼做為它的一部分,如此一來utf-8編碼也可以是為視為一種對ascii碼的拓展。值得注意的是unicode編碼中乙個中文字元佔2個位元組,而utf-8乙個中文字元佔3個位元組。從unicode到uft-8並不是直接的對應,而是要過一些演算法和規則來轉換。
在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。
用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為unicode字元到記憶體裡,編輯完成後,儲存的時候再把unicode轉換為utf-8儲存到檔案。
1.中文作業系統預設ansi編碼,生成的txt檔案預設為ansi編碼。
2.unicode是國際通用編碼。
3.utf-8編碼是unicode編碼在網路之間(主要是網頁)傳輸時的一種「變通」和「橋梁」編碼。utf-8在網路之間傳輸時可以節約資料量。
4.瀏覽器理解utf-8編碼,作業系統有時只認unicode編碼。
5.utf-8乙個中文字元佔三個位元組,gbk、ansi和unicode只佔2個位元組。
引用自
引用自
關於ANSI,unicode與utf 8的區別
非常好的一篇文章,值得一看,特轉之 關於編碼ansi gb2312 unicode與utf 8的區別 先做乙個小小的試驗 在乙個資料夾裡,把乙個txt文字 文字裡包含 今天的天氣非常好 這句話 分別另存為ansi unicode utf 8這三種編碼的txt檔案。然後,在該資料夾上點選右鍵,選擇 搜...
關於u8BOM,LF,CRLF的認知。
首先說下遇到的問題。工作需要,有乙個json檔案需要被簽名後使用。當時為了開發方便用記事本另存為u8然後簽名,校驗通過,用git push 到repository。這時候問題來了,發現本地build出來的apk對json檔案簽名的校驗是沒問題的,但是jenkins build出來的就是無法識別jso...
U盤的分割槽與合併
u盤分割槽的具體操作 步驟1 將u盤插入到電腦,接著組合鍵 win r 開啟執行,輸入 cmd 按回車鍵。步驟2 在開啟的視窗中輸入 diskpart 按回車鍵執行。步驟3 再輸入 select disk 1 命令 注意 寫1就是乙個u盤,兩個就寫2,以此類推 步驟4 選擇完成磁碟後繼續輸入命令 c...