Encoding 類別
表示字元編碼方式。
名稱 | 說明 | |
---|---|---|
Encoding() | 初始化 Encoding 類別的新執行個體。 | |
Encoding(Int32) | 初始化對應到指定字碼頁之 Encoding 類別的新執行個體。 |
名稱 | 說明 | |
---|---|---|
ASCII | 取得 ASCII (7 位元) 字元集 (Character Set) 的編碼方式。 | |
BigEndianUnicode | 取得 UTF-16 格式的編碼方式,其使用由大到小的位元組順序。 | |
BodyName | 在衍生類別中覆寫時,取得可以與郵件代理程式主體標籤一起使用的目前編碼方式名稱。 | |
CodePage | 在衍生類別中覆寫時,取得目前 Encoding 的字碼頁識別項。 | |
DecoderFallback | 取得或設定目前 Encoding 物件的 DecoderFallback 物件。 | |
Default | 取得作業系統目前 ANSI 字碼頁的編碼方式。 | |
EncoderFallback | 取得或設定目前 Encoding 物件的 EncoderFallback 物件。 | |
EncodingName | 在衍生類別中覆寫時,取得目前編碼方式的人們可讀取 (Human-Readable) 的描述。 | |
HeaderName | 在衍生類別中覆寫時,取得可以與郵件代理程式標頭標籤一起使用的目前編碼方式名稱。 | |
IsBrowserDisplay | 在衍生類別中覆寫時,取得值,指出瀏覽器用戶端是否可以使用目前的編碼方式來顯示內容。 | |
IsBrowserSave | 在衍生類別中覆寫時,取得值,指出瀏覽器用戶端是否可以使用目前的編碼方式來儲存內容。 | |
IsMailNewsDisplay | 在衍生類別中覆寫時,取得值,指出郵件和新聞用戶端是否可以使用目前的編碼方式來顯示內容。 | |
IsMailNewsSave | 在衍生類別中覆寫時,取得值,指出郵件和新聞用戶端是否可以使用目前的編碼方式來儲存內容。 | |
IsReadOnly | 在衍生類別中覆寫時,取得值,指出目前的編碼方式是否為唯讀。 | |
IsSingleByte | 在衍生類別中覆寫時,取得值,指出目前的編碼方式是否使用單一位元組字碼指標。 | |
Unicode | 以位元組由小到大位元組順序取得 UTF-16 格式的編碼方式。 | |
UTF32 | 以位元組由小到大位元組順序取得 UTF-32 格式的編碼方式。 | |
UTF7 | 取得 UTF-7 格式的編碼方式。 | |
UTF8 | 取得 UTF-8 格式的編碼方式。 | |
WebName | 在衍生類別中覆寫時,若要取得目前的編碼方式,請取得向 Internet Assigned Numbers Authority (IANA) 註冊的名稱。 | |
WindowsCodePage | 在衍生類別中覆寫時,請取得最能符合目前編碼方式的 Windows 作業系統字碼頁。 |
名稱 | 說明 | |
---|---|---|
Clone | 在衍生類別中覆寫時,會建立目前 Encoding 物件的淺層複本。 | |
Convert(Encoding, Encoding, Byte[]) | 將整個位元組陣列從一種編碼方式轉換成另一種編碼方式。 | |
Convert(Encoding, Encoding, Byte[], Int32, Int32) | 將位元組陣列中的某一位元組範圍由一種編碼方式轉換成另一種編碼方式。 | |
Equals | 判斷指定的 Object 和目前的執行個體是否相等。 (覆寫Object.Equals(Object)。) | |
Finalize | 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。 | |
GetByteCount(Char[]) | 在衍生類別中覆寫時,計算編碼指定字元陣列中所有字元所產生的位元組數目。 | |
GetByteCount(String) | 在衍生類別中覆寫時,計算編碼指定的字串字元所產生的位元組數目。 | |
GetByteCount(Char*, Int32) | 在衍生類別中覆寫時,計算從指定的字元指標開始,編碼一組字元所產生的位元組數目。 | |
GetByteCount(Char[], Int32, Int32) | 在衍生類別中覆寫時,計算從指定的字元陣列編碼一組字元所產生的位元組數目。 | |
GetBytes(Char[]) | 在衍生類別中覆寫時,將指定字元陣列中的所有字元編碼成位元組序列。 | |
GetBytes(String) | 在衍生類別中覆寫時,將指定字串中的所有字元編碼成位元組序列。 | |
GetBytes(Char[], Int32, Int32) | 在衍生類別中覆寫時,將指定字元陣列中的一組字元編碼成位元組序列。 | |
GetBytes(Char*, Int32, Byte*, Int32) | 在衍生類別中覆寫時,從指定字元指標開始將一組字元編碼成位元組序列 (會從指定的位元組指標開始存放這些位元組)。 | |
GetBytes(Char[], Int32, Int32, Byte[], Int32) | 在衍生類別中覆寫時,將指定字元陣列中的一組字元編碼成指定的位元組陣列。 | |
GetBytes(String, Int32, Int32, Byte[], Int32) | 在衍生類別中覆寫時,將指定字串中的一組字元編碼成指定的位元組陣列。 | |
GetCharCount(Byte[]) | 在衍生類別中覆寫時,計算解碼指定位元組陣列中所有位元組所產生的字元數目。 | |
GetCharCount(Byte*, Int32) | 在衍生類別中覆寫時,計算從指定的位元組指標開始,解碼位元組序列所產生的字元數目。 | |
GetCharCount(Byte[], Int32, Int32) | 在衍生類別中覆寫時,計算從指定的位元組陣列解碼位元組序列所產生的字元數目。 | |
GetChars(Byte[]) | 在衍生類別中覆寫時,將指定位元組陣列中的所有位元組解碼成一組字元。 | |
GetChars(Byte[], Int32, Int32) | 在衍生類別中覆寫時,將指定位元組陣列中的位元組序列解碼成一組字元。 | |
GetChars(Byte*, Int32, Char*, Int32) | 在衍生類別中覆寫時,從指定位元組指標開始將位元組序列解碼成一組字元 (會從指定的字元指標開始存放這些字元)。 | |
GetChars(Byte[], Int32, Int32, Char[], Int32) | 在衍生類別中覆寫時,將指定位元組陣列中的位元組序列解碼成指定的字元陣列。 | |
GetDecoder | 在衍生類別中覆寫時,取得會將編碼的位元組序列轉換成字元序列的解碼器。 | |
GetEncoder | 在衍生類別中覆寫時,取得會將 Unicode 字元序列轉換成編碼的位元組序列的編碼器。 | |
GetEncoding(Int32) | 傳回與指定字碼頁識別項相關聯的編碼方式。 | |
GetEncoding(String) | 傳回與指定字碼頁名稱相關聯的編碼方式。 | |
GetEncoding(Int32, EncoderFallback, DecoderFallback) | 傳回與指定字碼頁識別項相關聯的編碼方式。 參數會針對無法編碼的字元以及無法解碼的位元組序列指定錯誤處理常式。 | |
GetEncoding(String, EncoderFallback, DecoderFallback) | 傳回與指定字碼頁名稱相關聯的編碼方式。 參數會針對無法編碼的字元以及無法解碼的位元組序列指定錯誤處理常式。 | |
GetEncodings | 傳回包含所有編碼方式的陣列。 | |
GetHashCode | 傳回目前執行個體的雜湊程式碼。 (覆寫 Object.GetHashCode()。) | |
GetMaxByteCount | 在衍生類別中覆寫時,計算編碼指定的字元數所產生的最大位元組數目。 | |
GetMaxCharCount | 在衍生類別中覆寫時,計算解碼指定的位元組數目所產生的最大字元數目。 | |
GetPreamble | 在衍生類別中覆寫時,傳回可指定所用編碼方式的位元組序列。 | |
GetString(Byte[]) | 在衍生類別中覆寫時,將指定位元組陣列中的所有位元組解碼成字串。 | |
GetString(Byte[], Int32, Int32) | 在衍生類別中覆寫時,將指定位元組陣列中的位元組序列解碼成字串。 | |
GetType | 取得目前執行個體的 Type。 (繼承自 Object)。 | |
IsAlwaysNormalized() | 取得值,指出目前的編碼方式是否永遠都是使用預設的正規化表單進行正規化。 | |
IsAlwaysNormalized(NormalizationForm) | 在衍生類別中覆寫時取得值,指出目前的編碼方式是否永遠都是使用指定的正規化表單進行正規化。 | |
MemberwiseClone | 建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 Object)。 | |
ToString | 傳回表示目前物件的字串。 (繼承自 Object)。 |
編碼是將一組 Unicode 字元轉換成位元組序列的處理程序。 相反地,解碼則是將已編碼的位元組序列轉換成一組 Unicode 字元的處理程序。 如需 Unicode Transformation Format (UTF) 和Encoding 所支援之其他編碼的詳細資訊,請參閱.NET Framework 中的字元編碼方式。
請注意,Encoding 主要是處理 Unicode 字元,而不是任意的二進位資料,例如位元組陣列。如果您的應用程式必須將任意二進位資料編碼成文字,應該使用諸如 uuencode 的通訊協定;該通訊協定是由 Convert.ToBase64CharArray 之類的方法所實作。
.NET Framework 提供下列 Encoding 類別實作來支援目前的 Unicode 編碼方式和其他編碼方式:
ASCIIEncoding 可編碼 Unicode 字元成單一 7 位元 ASCII 字元。 這種編碼方式只支援 U+0000 和 U+007F 之間的字元值。 字碼頁 20127。 也可透過 ASCII 屬性取得。
UTF7Encoding 會使用 UTF-7 編碼方式為 Unicode 字元編碼。 這種編碼方式支援所有的 Unicode 字元值。 字碼頁 65000。 也可透過 UTF7 屬性取得。
UTF8Encoding 會使用 UTF-8 編碼方式為 Unicode 字元編碼。 這種編碼方式支援所有的 Unicode 字元值。 字碼頁 65001。 也可透過 UTF8 屬性取得。
UnicodeEncoding 會使用 UTF-16 編碼方式為 Unicode 字元編碼。 同時支援由小到大和由大到小的位元組順序。 也可透過 Unicode 屬性和 BigEndianUnicode 屬性取得。
UTF32Encoding 會使用 UTF-32 編碼方式為 Unicode 字元編碼。 同時支援位元組由小到大 (字碼頁 12000) 和位元組由大到小 (字碼頁 12001) 的位元組順序。 也可透過 UTF32 屬性取得。
Encoding 類別主要用於在不同的編碼與 Unicode 之間轉換。 通常,一個衍生的 Unicode 類別就是適合應用程式的正確選擇。
您的應用程式會使用 GetEncoding 方法取得其他編碼方式。 它們應該會使用 GetEncodings 方法取得所有編碼方式的清單。
下表列出支援的編碼方式和其關聯的字碼頁。 最後一欄中的星號指示 .NET Framework 原本就支援此字碼頁 (不論基礎平台為何)。
字碼頁 | 名稱 | 顯示名稱 | |
---|---|---|---|
37 | IBM037 | IBM EBCDIC (美國-加拿大) | |
437 | IBM437 | OEM 美國 | |
500 | IBM500 | IBM EBCDIC (國際) | |
708 | ASMO-708 | 阿拉伯文 (ASMO 708) | |
720 | DOS-720 | 阿拉伯文 (DOS) | |
737 | ibm737 | 希臘文 (DOS) | |
775 | ibm775 | 波羅的海文 (DOS) | |
850 | ibm850 | 西歐語系 (DOS) | |
852 | ibm852 | 中歐語系 (DOS) | |
855 | IBM855 | OEM 斯拉夫文 | |
857 | ibm857 | 土耳其文 (DOS) | |
858 | IBM00858 | OEM 多語系拉丁文 I | |
860 | IBM860 | 葡萄牙文 (DOS) | |
861 | ibm861 | 冰島文 (DOS) | |
862 | DOS-862 | 希伯來文 (DOS) | |
863 | IBM863 | 加拿大法文 (DOS) | |
864 | IBM864 | 阿拉伯文 (864) | |
865 | IBM865 | 北歐字母 (DOS) | |
866 | cp866 | 斯拉夫文 (DOS) | |
869 | ibm869 | 希臘文,現代 (DOS) | |
870 | IBM870 | IBM EBCDIC (多語系拉丁文 2) | |
874 | windows-874 | 泰文 (Windows) | |
875 | cp875 | IBM EBCDIC (希臘文現代) | |
932 | shift_jis | 日文 (Shift-JIS) | |
936 | gb2312 | 簡體中文 (GB2312) | * |
949 | ks_c_5601-1987 | 韓文 | |
950 | big5 | 繁體中文 (Big5) | |
1026 | IBM1026 | IBM EBCDIC (土耳其拉丁文 5) | |
1047 | IBM01047 | IBM 拉丁文 1 | |
1140 | IBM01140 | IBM EBCDIC (美國-加拿大-歐洲) | |
1141 | IBM01141 | IBM EBCDIC (德國-歐洲) | |
1142 | IBM01142 | IBM EBCDIC (丹麥-挪威-歐洲) | |
1143 | IBM01143 | IBM EBCDIC (芬蘭-瑞典-歐洲) | |
1144 | IBM01144 | IBM EBCDIC (義大利-歐洲) | |
1145 | IBM01145 | IBM EBCDIC (西班牙-歐洲) | |
1146 | IBM01146 | IBM EBCDIC (英國-歐洲) | |
1147 | IBM01147 | IBM EBCDIC (法國-歐洲) | |
1148 | IBM01148 | IBM EBCDIC (國際-歐洲) | |
1149 | IBM01149 | IBM EBCDIC (冰島文-歐洲) | |
1200 | utf-16 | Unicode | * |
1201 | unicodeFFFE | Unicode (位元組由大到小) | * |
1250 | windows-1250 | 中歐語系 (Windows) | |
1251 | windows-1251 | 斯拉夫文 (Windows) | |
1252 | Windows-1252 | 西歐語系 (Windows) | * |
1253 | windows-1253 | 希臘文 (Windows) | |
1254 | windows-1254 | 土耳其文 (Windows) | |
1255 | windows-1255 | 希伯來文 (Windows) | |
1256 | windows-1256 | 阿拉伯文 (Windows) | |
1257 | windows-1257 | 波羅的海文 (Windows) | |
1258 | windows-1258 | 越南文 (Windows) | |
1361 | 韓文 | 韓文 (Johab) | |
10000 | Macintosh | 西歐語系 (Mac) | |
10001 | x-mac-japanese | 日文 (Mac) | |
10002 | x-mac-chinesetrad | 繁體中文 (Mac) | |
10003 | x-mac-korean | 韓文 (Mac) | * |
10004 | x-mac-arabic | 阿拉伯文 (Mac) | |
10005 | x-mac-hebrew | 希伯來文 (Mac) | |
10006 | x-mac-greek | 希臘文 (Mac) | |
10007 | x-mac-cyrillic | 斯拉夫文 (Mac) | |
10008 | x-mac-chinesesimp | 簡體中文 (Mac) | * |
10010 | x-mac-romanian | 羅馬尼亞文 (Mac) | |
10017 | x-mac-ukrainian | 烏克蘭文 (Mac) | |
10021 | x-mac-thai | 泰文 (Mac) | |
10029 | x-mac-ce | 中歐語系 (Mac) | |
10079 | x-mac-icelandic | 冰島文 (Mac) | |
10081 | x-mac-turkish | 土耳其文 (Mac) | |
10082 | x-mac-croatian | 克羅埃西亞文 (Mac) | |
12000 | utf-32 | Unicode (UTF-32) | * |
12001 | utf-32BE | Unicode (UTF-32 位元組由大到小) | * |
20000 | x-Chinese-CNS | 繁體中文 (CNS) | |
20001 | x-cp20001 | TCA 台灣 | |
20002 | x-Chinese-Eten | 繁體中文 (倚天) | |
20003 | x-cp20003 | IBM5550 台灣 | |
20004 | x-cp20004 | TeleText 台灣 | |
20005 | x-cp20005 | Wang 台灣 | |
20105 | x-IA5 | 西歐語系 (IA5) | |
20106 | x-IA5-German | 德文 (IA5) | |
20107 | x-IA5-Swedish | 瑞典文 (IA5) | |
20108 | x-IA5-Norwegian | 挪威文 (IA5) | |
20127 | us-ascii | US-ASCII | * |
20261 | x-cp20261 | T.61 | |
20269 | x-cp20269 | ISO-6937 | |
20273 | IBM273 | IBM EBCDIC (德國) | |
20277 | IBM277 | IBM EBCDIC (丹麥-挪威) | |
20278 | IBM278 | IBM EBCDIC (芬蘭-瑞典) | |
20280 | IBM280 | IBM EBCDIC (義大利) | |
20284 | IBM284 | IBM EBCDIC (西班牙) | |
20285 | IBM285 | IBM EBCDIC (英國) | |
20290 | IBM290 | IBM EBCDIC (日文片假名) | |
20297 | IBM297 | IBM EBCDIC (法國) | |
20420 | IBM420 | IBM EBCDIC (阿拉伯文) | |
20423 | IBM423 | IBM EBCDIC (希臘文) | |
20424 | IBM424 | IBM EBCDIC (希伯來文) | |
20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC (韓文擴充) | |
20838 | IBM-Thai | IBM EBCDIC (泰文) | |
20866 | koi8 r | 斯拉夫文 (KOI8-R) | |
20871 | IBM871 | IBM EBCDIC (冰島文) | |
20880 | IBM880 | IBM EBCDIC (斯拉夫俄文) | |
20905 | IBM905 | IBM EBCDIC (土耳其文) | |
20924 | IBM00924 | IBM 拉丁文 1 | |
20932 | EUC-JP | 日文 (JIS 0208-1990 和 0212-1990) | |
20936 | x-cp20936 | 簡體中文 (GB2312-80) | * |
20949 | x-cp20949 | 韓文 Wansung | * |
21025 | cp1025 | IBM EBCDIC (斯拉夫塞爾維亞文-保加利亞文) | |
21866 | koi8-u | 斯拉夫文 (KOI8-U) | |
28591 | iso-8859-1 | 西歐語系 (ISO) | * |
28592 | iso-8859-2 | 中歐語系 (ISO) | |
28593 | iso-8859-3 | 拉丁文 3 (ISO) | |
28594 | iso-8859-4 | 波羅的海文 (ISO) | |
28595 | iso-8859-5 | 斯拉夫文 (ISO) | |
28596 | iso-8859-6 | 阿拉伯文 (ISO) | |
28597 | iso-8859-7 | 希臘文 (ISO) | |
28598 | iso-8859-8 | 希伯來文 (ISO-Visual) | * |
28599 | iso-8859-9 | 土耳其文 (ISO) | |
28603 | iso-8859-13 | 愛沙尼亞文 (ISO) | |
28605 | iso-8859-15 | 拉丁文 9 (ISO) | |
29001 | x-Europa | 歐洲 | |
38598 | iso-8859-8-i | 希伯來文 (ISO-Logical) | * |
50220 | iso 2022 jp | 日文 (JIS) | * |
50221 | csISO2022JP | 日文 (JIS-允許 1 位元組片假名) | * |
50222 | iso 2022 jp | 日文 (JIS-允許 1 位元組片假名 - SO/SI) | * |
50225 | iso 2022 kr | 韓文 (ISO) | * |
50227 | x-cp50227 | 簡體中文 (ISO-2022) | * |
51932 | euc-jp | 日文 (EUC) | * |
51936 | EUC-CN | 簡體中文 (EUC) | * |
51949 | euc-kr | 韓文 (EUC) | * |
52936 | hz-gb-2312 | 簡體中文 (HZ) | * |
54936 | GB18030 | 簡體中文 (GB18030) | * |
57002 | x-iscii-de | ISCII 梵文語系 | * |
57003 | x-iscii-be | ISCII 孟加拉文 | * |
57004 | x-iscii-ta | ISCII 坦米爾文 | * |
57005 | x-iscii-te | ISCII 特拉古文 | * |
57006 | x-iscii-as | ISCII 阿薩姆文 | * |
57007 | x-iscii-or | ISCII 歐利亞文 | * |
57008 | x-iscii-ka | ISCII 坎那達文 | * |
57009 | x-iscii-ma | ISCII 馬來亞拉姆文 | * |
57010 | x-iscii-gu | ISCII 古吉拉特文 | * |
57011 | x-iscii-pa | ISCII 旁遮普語 | * |
65000 | utf-7 | Unicode (UTF-7) | * |
65001 | utf-8 | Unicode (UTF-8) | * |
如果要轉換的資料只可以從循序區塊取得 (例如從資料流讀取的資料) 時,或資料量太大而必須分成較小區塊時,您的應用程式應該使用衍生類別 (Derived Class) 的 GetDecoder 方法或GetEncoder 方法提供的 Decoder 或 Encoder。
UTF-16 和 UTF-32 編碼器可以使用位元組由大到小的位元組順序 (最大顯著性位元組在前) 或位元組由小到大的位元組順序 (最小顯著性位元組在前)。 例如,拉丁大寫字母 A (U+0041) 會序列化如下 (使用十六進位):
UTF-16 位元組由大到小的位元組順序:00 41
UTF-16 位元組由小到大的位元組順序:41 00
UTF-32 位元組由大到小的位元組順序:00 00 00 41
UTF-32 位元組由小到大的位元組順序:41 00 00 00
使用原生的位元組順序來儲存 Unicode 字元,通常會更有效率。 例如,在位元組由小到大的平台 (如 Intel 電腦) 上,最好使用位元組由小到大位元組順序。
GetPreamble 方法會擷取包含位元組順序標記 (BOM) 的位元組陣列。 如果此位元組陣列有前置編碼的資料流,將有助於解碼器識別所用的編碼格式。
如需位元組順序和位元組順序標記的詳細資訊,請參閱以下網頁中的 Unicode 標準:Unicode Home Page。
請注意,編碼類別可讓錯誤:
以無訊息模式變更為 "?" 字元。
使用「自動調整」字元。
透過使用 EncoderFallback 和 DecoderFallback 類別並搭配 U+FFFD Unicode 取代字元,變更為應用程式的特定行為。
建議您的應用程式在所有資料流錯誤上擲回例外狀況。 應用程式會在適當時使用 "throwonerror" 旗標,或使用 EncoderExceptionFallback 和 DecoderExceptionFallback 類別。通常不建議使用自動調整後援,因為這常會導致資料遺失或混淆,而且速度比簡單的字元取代更慢。 如果是 ANSI 編碼,則自動調整行為是預設值。
下列範例會將字串從一個編碼方式轉換成另一個編碼方式。
using System;
using System.Text; class Example
{
static void Main()
{
string unicodeString = "This string contains the unicode character Pi (\u03a0)"; // Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode; // Convert the string into a byte array.
byte[] unicodeBytes = unicode.GetBytes(unicodeString); // Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes); // Convert the new byte[] into a char[] and then into a string.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars); // Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
// The example displays the following output:
// Original string: This string contains the unicode character Pi (Π)
// Ascii converted string: This string contains the unicode character Pi (?)