再談Net Framework中的編解碼
System.text名稱空間
.Net Framework中這個名稱空間是有關對文字進行操作的類集。具體可分為編碼解碼相關;字串操作相關;正規表示式相關,這樣三個組成部分。
編碼/解碼
l 在ASP.NET開發中一般不用我們自己寫程式實現對文字的編碼解碼。通常只需要對當前Page頁進行設計時或執行時的編碼指定即可,預設情況下則會使用UTF-8這種編碼。
l 從更低的層次來看,計算機處理的資料就可看作是文字與二進位制資料。需要編解碼的就是文字的資料,二進位制資料根本不需要編解碼。
l 編碼就是把文字處理為位元組集,實現讓計算機對資料進行處理,傳遞與儲存;解碼則是把位元組集處理為對人類而言有意義的文字,並由輸出裝置輸出。
l Net Framework內部使用UTF-16這種編碼格式處理文字。
l Net Framework中處理編碼解碼的類位於System.text名稱空間。這包括Encoding抽象基類及其派生類;Encoder/Decoder類。
Encoding
l Encoding是個抽象類,必須繼承使用。但是它有一組靜態屬性和方法,用來返回Encoding的派生類的例項。例如:Encoding.UTF8屬性,返回的是UTF8Encoding類例項。
l Encoding的派生類的例項也可以通過NEW建構函式而得。
l Encoding的多個表示不同編碼的派生類,來具體完成編碼和解碼的任務。注意:還有解碼哦!
l 既然Encoding的派生類能完成編碼解碼的任務,為什麼還需要Encoder/Decoder呢?在網路傳輸時,我們有可能是把資料分幾次來傳輸;在對檔案進行讀寫時也可能是分多次來進行。問題就在於多次。假設我們某一次傳輸的位元組集,其數量不足以處理為有效的文字,麻煩就來了,例如漢字”未”用UTF-8編碼後是三個位元組,如果我們只傳輸了2個位元組,解碼後的就是亂碼而不是漢字”未”。Encoder/Decoder這兩個編解碼類,就是用來處理這樣的問題。用他們進行編解碼時,如果位元組集不足以完全解碼,就先解碼一部分,剩下的位元組集暫時保留在Decoder中,等待下一次位元組集的傳輸,這樣就能保證被解碼的是正常的文字。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-659842/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [譯] 再談 CSS 中的程式碼味道CSS
- .NET 5 中 Target Framework 詳解Framework
- netty系列之:netty中的懶人編碼解碼器Netty
- python的小資料池 is和== 以及再談編碼Python
- .NET Framework 原始碼Framework原始碼
- Netty 中的訊息解析和編解碼器Netty
- netty中的一些解碼器和編碼器Netty
- 再談《Visual Studio中編寫x64彙編的具體方法》
- 【Netty】編解碼器Netty
- .NET Framework (最新版本到.NET Framework 4.7.2)中的新增功能Framework
- 瞭解 .NET Framework 2.0 中“程式碼訪問安全性”(CAS) 的新特點Framework
- python中的編碼&解碼Python
- 再談原始碼閱讀原始碼
- Android 中的編碼與解碼Android
- 從 Vue3 原始碼中再談 nextTickVue原始碼
- netty系列之:netty中常用的物件編碼解碼器Netty物件
- netty系列之:netty中常用的字串編碼解碼器Netty字串編碼
- netty系列之:netty中常用的xml編碼解碼器NettyXML
- 什麼是Netty編解碼,Netty編解碼器有哪些?Protostuff怎麼使用?Netty
- JVM系列之:再談java中的safepointJVMJava
- 詳解.NET中的動態編譯技術編譯
- .NET Framework 3.5 版中的新增功能(6)[整理]Framework
- .NET Framework 3.5 版中的新增功能(5)[整理]Framework
- .NET Framework 3.5 版中的新增功能(4)[整理]Framework
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- 談談JavaScript編碼風格JavaScript
- cosmos tendermint irisnet 的amino編解碼解析
- Framework 原始碼解析知識梳理(4) 從原始碼角度談談 Handler 的應用Framework原始碼
- Netty原始碼學習6——netty編碼解碼器&粘包半包問題的解決Netty原始碼
- .NET Framework 4和.NET Framework 4 Client Profile的區別Frameworkclient
- 字元編碼前世今生詳解,從此與“亂碼”說再見!字元
- Netty常用招式——ChannelHandler與編解碼Netty
- netty系列之:自定義編碼解碼器Netty
- .NET Framework 4 和 .NET Framework 4 Client ProfileFrameworkclient
- netty系列之:netty中的核心MessageToByte編碼器Netty
- netty系列之:netty中的核心編碼器base64Netty
- netty系列之:netty中的frame解碼器Netty
- 字元編碼淺談字元