CSharp——Encoding編碼詳情

CSharp-Encoding編碼

在網絡通信中,很多情況下都是將字符信息轉成字節序列進行傳輸。將字符序列轉為字節序列的過程稱為編碼。當這些字節傳送到接收方,接收方需要逆向將字節序列轉為字符序列。這個過程就是解碼。

常見編碼有ASCII字符集 ,非ASCII字符集 如GB2312 GB18030等,Unicode字符集。

在C#中,字符集默認是Unicode,一個英文占2個字節,一個漢字也占2個字節。Unicode能夠表示大部分國家的文字,但是空間占用相對ASCII較為浪費。

為了節約空間,后續出現了UTF-8,UTF-16,UTF-32.

UTF8是使用最為廣泛的一種UTF格式。屬于Unicode的一種變長字符編碼,一般使用1-4個字節編碼表示一個Unicode字符,即將一個Unicode字符編為1-4個字節組成的UTF8格式,根據不同符號而變化字節長度。

UTF8字節序列在所有系統中都一樣的,所以這樣可以很容易的進行排序。

UTF16將每個碼位表示為一個由1-2個16位整數組成的序列。

UTF32將每個碼位表示為一個32位整數。

Encoding編碼屬性

? ? ASCII ? ?獲取 ASCII(7 位)字符集的編碼。BigEndianUnicode ? ?獲取使用 Big Endian 字節順序的 UTF-16 格式的編碼。BodyName ? ?在派生類中重寫時,獲取可與郵件代理正文標記一起使用的當前編碼的名稱。CodePage ? ?在派生類中重寫時,獲取當前 Encoding 的代碼頁標識符。DecoderFallback ? ?獲取或設置當前 DecoderFallback 對象的 Encoding 對象。Default ? ?獲取此 .NET 實現的默認編碼。EncoderFallback ? ?獲取或設置當前 EncoderFallback 對象的 Encoding 對象。EncodingName ? ?在派生類中重寫時,獲取當前編碼的用戶可讀說明。HeaderName ? ?在派生類中重寫時,獲取可與郵件代理頭標記一起使用的當前編碼的名稱。IsBrowserDisplay ? ?在派生類中重寫時,獲取一個值,該值指示瀏覽器客戶端是否可以使用當前的編碼顯示內容。IsBrowserSave ? ?在派生類中重寫時,獲取一個值,該值指示瀏覽器客戶端是否可以使用當前的編碼保存內容。IsMailNewsDisplay ? ?在派生類中重寫時,獲取一個值,該值指示郵件和新聞客戶端是否可以使用當前的編碼顯示內容。IsMailNewsSave ? ?在派生類中重寫時,獲取一個值,該值指示郵件和新聞客戶端是否可以使用當前的編碼保存內容。IsReadOnly ? ?在派生類中重寫時,獲取一個值,該值指示當前的編碼是否為只讀。IsSingleByte ? ?在派生類中重寫時,獲取一個值,該值指示當前的編碼是否使用單字節碼位。Unicode ? ?獲取使用 Little-Endian 字節順序的 UTF-16 格式的編碼。UTF32 ? ?獲取使用 Little-Endian 字節順序的 UTF-32 格式的編碼。UTF7 ? ?獲取 UTF-7 格式的編碼。UTF8 ? ?獲取 UTF-8 格式的編碼。WebName ? ?在派生類中重寫時,獲取在 Internet 編號分配管理機構 (IANA) 注冊的當前編碼的名稱。WindowsCodePage ? ?在派生類中重寫時,獲取與當前編碼最緊密對應的 Windows 操作系統代碼頁。


? ??

Encoding編碼方法

? ? Clone() ? ?當在派生類中重寫時,創建當前 Encoding 對象的一個卷影副本。Convert(Encoding, Encoding, Byte[]) ? ?將整個字節數組從一種編碼轉換為另一種編碼。Convert(Encoding, Encoding, Byte[], Int32, Int32) ? ?將字節數組內某個范圍的字節從一種編碼轉換為另一種編碼。Equals(Object) ? ?確定指定的 Object 是否等同于當前實例。GetByteCount(Char*, Int32) ? ?在派生類中重寫時,計算對一組字符(從指定的字符指針處開始)進行編碼所產生的字節數。GetByteCount(Char[]) ? ?在派生類中重寫時,計算對指定字符數組中的所有字符進行編碼所產生的字節數。GetByteCount(Char[], Int32, Int32) ? ?在派生類中重寫時,計算對指定字符數組中的一組字符進行編碼所產生的字節數。GetByteCount(String) ? ?在派生類中重寫時,計算對指定字符串中的字符進行編碼所產生的字節數。GetBytes(Char*, Int32, Byte*, Int32) ? ?在派生類中重寫時,將一組字符(從指定的字符指針開始)編碼為一個字節序列,并從指定的字節指針開始存儲該字節序列。GetBytes(Char[]) ? ?在派生類中重寫時,將指定字符數組中的所有字符編碼為一個字節序列。GetBytes(Char[], Int32, Int32) ? ?在派生類中重寫時,將指定字符數組中的一組字符編碼為一個字節序列。GetBytes(Char[], Int32, Int32, Byte[], Int32) ? ?在派生類中重寫時,將指定字符數組中的一組字符編碼為指定的字節數組。GetBytes(String) ? ?在派生類中重寫時,將指定字符串中的所有字符編碼為一個字節序列。GetBytes(String, Int32, Int32, Byte[], Int32) ? ?在派生類中重寫時,將指定字符串中的一組字符編碼為指定的字節數組。GetCharCount(Byte*, Int32) ? ?在派生類中重寫時,計算對字節序列(從指定的字節指針開始)進行解碼所產生的字符數。GetCharCount(Byte[]) ? ?在派生類中重寫時,計算對指定字節數組中的所有字節進行解碼所產生的字符數。GetCharCount(Byte[], Int32, Int32) ? ?在派生類中重寫時,計算對字節序列(從指定字節數組開始)進行解碼所產生的字符數。GetChars(Byte*, Int32, Char*, Int32) ? ?在派生類中重寫時,將一個字節序列(從指定的字節指針開始)解碼為一組字符,并從指定的字符指針開始存儲該組字符。GetChars(Byte[]) ? ?在派生類中重寫時,將指定字節數組中的所有字節解碼為一組字符。GetChars(Byte[], Int32, Int32) ? ?在派生類中重寫時,將指定字節數組中的一個字節序列解碼為一組字符。GetChars(Byte[], Int32, Int32, Char[], Int32) ? ?在派生類中重寫時,將指定字節數組中的字節序列解碼為指定的字符數組。GetDecoder() ? ?在派生類中重寫時,獲取一個解碼器,該解碼器將已編碼的字節序列轉換為字符序列。GetEncoder() ? ?在派生類中重寫時,獲取一個解碼器,該解碼器將 Unicode 字符序列轉換為已編碼的字節序列。GetEncoding(Int32) ? ?返回與指定代碼頁標識符關聯的編碼。GetEncoding(Int32, EncoderFallback, DecoderFallback) ? ?返回與指定代碼頁標識符關聯的編碼。 參數指定一個錯誤處理程序,用于處理無法編碼的字符和無法解碼的字節序列。GetEncoding(String) ? ?返回與指定代碼頁名稱關聯的編碼。GetEncoding(String, EncoderFallback, DecoderFallback) ? ?返回與指定代碼頁名稱關聯的編碼。 參數指定一個錯誤處理程序,用于處理無法編碼的字符和無法解碼的字節序列。GetEncodings() ? ?返回包含所有編碼的數組。GetHashCode() ? ?返回當前實例的哈希代碼。GetMaxByteCount(Int32) ? ?在派生類中重寫時,計算對指定數目的字符進行編碼所產生的最大字節數。GetMaxCharCount(Int32) ? ?在派生類中重寫時,計算對指定數目的字節進行解碼時所產生的最大字符數。GetPreamble() ? ?在派生類中重寫時,返回指定所用編碼的字節序列。GetString(Byte*, Int32) ? ?在派生類中重寫時,將在指定地址開始的指定字節數解碼為字符串。GetString(Byte[]) ? ?在派生類中重寫時,將指定字節數組中的所有字節解碼為一個字符串。GetString(Byte[], Int32, Int32) ? ?在派生類中重寫時,將指定字節數組中的一個字節序列解碼為一個字符串。GetType() ? ?獲取當前實例的 Type。IsAlwaysNormalized() ? ?使用默認范式獲取一個值,該值指示當前編碼是否始終被規范化。IsAlwaysNormalized(NormalizationForm) ? ?在派生類中重寫時,使用指定范式獲取一個值,該值指示當前編碼是否始終被規范化。MemberwiseClone() ? ?創建當前 Object 的淺表副本。RegisterProvider(EncodingProvider) ? ?注冊編碼提供程序。ToString() ? ?返回表示當前對象的字符串。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39184.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL | join 的目的是什么?

如是我聞: 在 SQL 中使用 JOIN 的目的是將兩個或多個數據庫表的數據組合在一起,這樣我們就可以在一個查詢中獲取這些表的相關信息。 假設我們有兩本不同的書,一本記錄了孩子們的名字和他們的愛好,另一本記錄了他們的家庭地址。如…

盛元廣通打造智慧校園實驗室安全管理系統

盛元廣通智慧校園實驗室安全管理系統以安全為重點,構建由學校、二級單位、實驗室組成的三級聯動的實驗室安全多級管理體系、多類用戶角色,內置教育部標準檢查表,支撐實驗室相關業務過程的智慧管理。實現通過PC端/手機移動端開展檢查工作、手機…

sh腳本筆記2

test條件測試 語法 條件測試語法說明語法1&#xff1a;test <測試表達式>這是利用test命令進行條件測試表達式的方法。test命令和“<測試表達式>”之間至少有一個空格語法2&#xff1a;[ <測試表達式> ]這是通過[]&#xff08;單中括號&#xff09;進行條件…

將exe文件添加到注冊表中,實現開機時自動運行

目錄 一、前言 二、代碼 三、使用步驟 1.編譯生成exe文件、 2.以管理員身份運行代碼 3.打開注冊表&#xff0c;驗證結果 一、前言 在Windows操作系統中&#xff0c;將exe文件的路徑添加到注冊表下&#xff0c;主要用于實現程序的開機自動運行功能。 注冊表路徑為&#xf…

白騎士的C語言教學基礎篇 1.3 控制流

系列目錄 上一篇&#xff1a;白騎士的C語言教學基礎篇 1.2 C語言基礎語法 在這一節中&#xff0c;我們將介紹C語言中的控制流結構&#xff0c;包括條件語句、循環語句以及循環控制語句。這些結構允許我們根據不同的條件執行不同的代碼塊&#xff0c;從而使程序更具靈活性和功能…

Python中的并發編程(5)PyQt 多線程

PyQt 多線程 1 卡住的計時器 我們定義了一個計時器&#xff0c;每秒鐘更新一次顯示的數字。此外我們定義了一個耗時5秒的任務oh_no&#xff0c;和按鈕“危險”綁定。 當我們點擊“危險”按鈕時&#xff0c;程序去執行oh_no&#xff0c;導致顯示停止更新了。 import sys im…

Aspose.PDF功能演示:在程序中合并 JPG 文件

Aspose.PDF 是一款高級PDF處理API&#xff0c;可以在跨平臺應用程序中輕松生成&#xff0c;修改&#xff0c;轉換&#xff0c;呈現&#xff0c;保護和打印文檔。無需使用Adobe Acrobat。此外&#xff0c;API提供壓縮選項&#xff0c;表創建和處理&#xff0c;圖形和圖像功能&am…

Kile鐘優化等級講解

這里直接說說kile的優化等級: 這里有4個等級,分別為:-O0、-O1、-O2、-O3 為什么要進行編譯優化? 主要目的: 1. 提高代碼執行的速度; 2. 減少內存占用; 3. 降低能耗,延長電池壽命; 4. 消除代碼中冗余和不必要的代碼,提高程序穩定性和可靠性。 Kile等級描述: -O0:這…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 示例: 輸入: [1,2,3]輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used數組&#xff0c;其實就是記錄此時path里都有哪些元素…

【圖論】200. 島嶼問題

200. 島嶼問題 難度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 問題描述 給你一個由 1&#xff08;陸地&#xff09;和 0&#xff08;水&#xff09;組成的的二維網格&#xff0c;請你計算網格中島嶼的數量。 島嶼總是被水包圍&…

一個專為Android平臺設計的高度可定制的日歷庫

大家好&#xff0c;今天給大家分享一個高度可定制的日歷庫kizitonwose/Calendar。 Calendar專為Android平臺設計&#xff0c;支持RecyclerView和Compose框架。它提供了豐富的功能&#xff0c;允許開發者根據需求定制日歷的外觀和功能。 項目介紹 此庫是開發Android應用時&…

大型語言模型評估調查

原文鏈接&#xff1a;A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文從三個關鍵維度&#xff1a;評價什么、在哪里評價和如何評價&#xff0c;對這些 LLMs 評價方法進行了全面回顧。 首先&#xff0c;我們…

第十四屆藍橋杯省賽C++A組F題【買瓜】題解(AC)

70pts 題目要求我們在給定的瓜中選擇一些瓜&#xff0c;可以選擇將瓜劈成兩半&#xff0c;使得最后的總重量恰好等于 m m m。我們的目標是求出至少需要劈多少個瓜。 首先&#xff0c;我們注意到每個瓜的重量最多為 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多為…

C++ 徹底搞懂指針(1)

當有人問起,什么是指針時,我會毫不猶豫地回答,指針變量存放的是地址!然后呢,好像也說不出什么了,今天就再來詳細看一下指針吧。 本文提綱如下: ? 指針變量 ? 未初始化的指針 ? NULL ? void指針 ? 指針的指針 首先要明白幾點: ? 每個字節都有…

用OpenAI接口給女朋友手搓AI小助理,她說要獎勵我,結果……

前言 最近&#xff0c;我那財經系的小女友迎來了考試周&#xff0c;她的復習資料已經堆得像珠穆朗瑪峰一樣高。壓力山大的她不斷讓我幫她整理這些資料&#xff0c;還頻頻向我傾訴她的苦水。雖然我自己也挺忙的&#xff0c;但為了愛&#xff0c;我只能忍痛扛起這重擔。。。為了…

【C++】STL-priority_queue

目錄 1、priority_queue的使用 2、實現沒有仿函數的優先級隊列 3、實現有仿函數的優先級隊列 3.1 仿函數 3.2 真正的優先級隊列 3.3 優先級隊列放自定義類型 1、priority_queue的使用 priority_queue是優先級隊列&#xff0c;是一個容器適配器&#xff0c;不滿足先進先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件簡介 &#xff08;1&#xff09;名字必須為application,否則無法識別。后綴有三種文件類型&#xff1a; properties/yml/yaml&#xff0c;但是yml和yaml使用方法相同 &#xff08;2&#xff09; Spring Boot 項?默認的配置文件為 properties &#xff…

【單片機畢業設計選題24041】-基于STM32的水質檢測系統

系統功能: 系統上電后顯示“歡迎使用水質檢測系統請稍后”兩秒后進入正常顯示頁面。 第一頁面第一行顯示“系統狀態信息”&#xff0c;第二行顯示溫度和PH值信息&#xff0c;第三行顯示 渾濁度信息&#xff0c;第四行顯示TDS值信息。 第一頁面下的按鍵操作&#xff1a; 短…

Kotlin中的類

類初始化順序 constructor 里的參數列表是首先被執行的&#xff0c;緊接著是 init 塊和屬性初始化器&#xff0c;最后是次構造函數的函數體。 主構造函數參數列表firstProperty 初始化第一個 init 塊secondProperty 初始化第二個 init 塊次構造函數函數體 class Example const…

英語動詞時態

英語動詞時態總結 動詞時態一般進行完成完成進行現在一般現在時態動詞原形/動詞原形s&#xff08;第三人稱單數&#xff09;eat/eats現在進行時態助動詞be的變位動詞的現在分詞am/is/are eating現在完成時態助動詞have的變位動詞的過去分詞has/have eaten現在完成進行時態have…