關於ANSI,unicode與utf 8的區別

2022-03-31 11:18:33 字數 1346 閱讀 5260

非常好的一篇文章,值得一看,特轉之

關於編碼ansi、gb2312、unicode與utf-8的區別

先做乙個小小的試驗:

在乙個資料夾裡,把乙個txt文字(文字裡包含「今天的天氣非常好」這句話)分別另存為ansi、unicode、utf-8這三種編碼的txt檔案。然後,在該資料夾上點選右鍵,選擇「搜尋(e)…」。

搜尋「天氣」二字,可以搜尋出ansi和unicode這兩種編碼的txt檔案,搜尋不出utf-8編碼的檔案。

原因:1.中文作業系統預設ansi編碼,生成的txt檔案預設為ansi編碼,所以,可以搜尋出來。

2.unicode是國際通用編碼,所以,可以搜尋出來。

3.utf-8編碼是unicode編碼在網路之間(主要是網頁)傳輸時的一種「變通」和「橋梁」編碼。utf-8在網路之間傳輸時可以節約資料量。所以,使用作業系統無法搜尋出txt文字。

按照utf-8創始人的願望:

端(unicode)——傳輸(utf-8)——端(unicode)

但是,後來,許多**開發者在開發網頁時直接使用utf-8編碼。

端(utf-8)——傳輸(utf-8)——端(utf-8)

所以,在瀏覽器上看到的編碼是:unicode(utf-8)。正因為在瀏覽器上這麼並列地列出unicode(utf-8),造成許多網友(甚至不少程式設計師)誤認為unicode=utf-8。其實,按照utf-8創始人的原意,在開發網頁時使用utf-8編碼是錯誤的做法,並且,早期的瀏覽器也不支援解析utf-8編碼。但是,眾人的力量是巨大的,微軟不得不「趨炎附勢」,在瀏覽器上支援解析utf-8編碼。

問題是:utf-8編碼影響了**開發者,或者說,**開發者「擴充套件」了utf-8編碼的使用範圍。但是,**開發者仍然無法影響各類文件的開發者,所以,word文件和一些國際通用的文件仍然使用unicode編碼而不使用utf-8編碼。

比如:「嚴」的unicode碼是4e25,utf-8編碼是e4b8a5,兩者是不一樣的。

在中文和日文作業系統裡生成的(txt和xml)檔案的編碼雖然都是ansi,但是,在簡體中文系統下,ansi 編碼代表 gb2312 編碼,在日文作業系統下,ansi 編碼代表 jis 編碼。不同 ansi 編碼之間互不相容,當資訊在國際間交流時,無法將屬於兩種語言的文字,儲存在同一段 ansi 編碼的文字中。

結論:國際文件(txt和xml)使用unicode編碼是正宗做法;作業系統和瀏覽器都能夠「理解」unicode編碼。瀏覽器「迫於壓力」才「理解」utf-8編碼。但是,作業系統有時只認unicode編碼。

unicode與unicode big endian的區別:你吃雞蛋時先吃小頭還是先吃大頭?unicode與unicode big endian的區別就是在編碼時小頭優先與大頭優先的區別。「隨波逐流」使用unicode就ok了

關於ANSI,unicode與utf 8的區別

一直容易遺忘,遂做個筆記。ansi編碼是一種對ascii碼的拓展 ansi編碼用0x00 0x7f 即十進位制下的0到127 範圍的1 個位元組來表示 1 個英文本元,超出乙個位元組的 0x80 0xffff 範圍來表示其他語言的其他字元。也就是說,ansi碼僅在前128 0 127 個與ascii...

關於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...