public:
static property System::Text::Encoding ^ UTF8 { System::Text::Encoding ^ get(); };
public static System.Text.Encoding UTF8 { get; }
member this.UTF8 : System.Text.Encoding
Public Shared ReadOnly Property UTF8 As Encoding
希臘文小寫字母 BETA (U + 03B2)
(U + D800 U + DD54) 的代理配對,可形成希臘文 ACROPHONIC 閣樓 1000 STATERS (U + 10154) 。
它會顯示每個字元的 UTF-16 程式碼單位,並決定 UTF-8 編碼器為字元陣列編碼所需的位元組數目。 然後,它會將字元編碼,並顯示產生的 UTF-8 編碼位元組。
using System;
using System.Text;
public class Example
public static void Main()
// Create a character array.
string gkNumber = Char.ConvertFromUtf32(0x10154);
char[] chars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2',
gkNumber[0], gkNumber[1] };
// Get UTF-8 and UTF-16 encoders.
Encoding utf8 = Encoding.UTF8;
Encoding utf16 = Encoding.Unicode;
// Display the original characters' code units.
Console.WriteLine("Original UTF-16 code units:");
byte[] utf16Bytes = utf16.GetBytes(chars);
foreach (var utf16Byte in utf16Bytes)
Console.Write("{0:X2} ", utf16Byte);
Console.WriteLine();
// Display the number of bytes required to encode the array.
int reqBytes = utf8.GetByteCount(chars);
Console.WriteLine("\nExact number of bytes required: {0}",
reqBytes);
// Display the maximum byte count.
int maxBytes = utf8.GetMaxByteCount(chars.Length);
Console.WriteLine("Maximum number of bytes required: {0}\n",
maxBytes);
// Encode the array of chars.
byte[] utf8Bytes = utf8.GetBytes(chars);
// Display all the UTF-8-encoded bytes.
Console.WriteLine("UTF-8-encoded code units:");
foreach (var utf8Byte in utf8Bytes)
Console.Write("{0:X2} ", utf8Byte);
Console.WriteLine();
// The example displays the following output:
// Original UTF-16 code units:
// 7A 00 61 00 06 03 FD 01 B2 03 00 D8 54 DD
// Exact number of bytes required: 12
// Maximum number of bytes required: 24
// UTF-8-encoded code units:
// 7A 61 CC 86 C7 BD CE B2 F0 90 85 94
Imports System.Text
Public Module Example
Public Sub Main()
' Create a character array.
Dim gkNumber As String = Char.ConvertFromUtf32(&h10154)
Dim chars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD),
ChrW(&H03B2), gkNumber(0), gkNumber(1) }
' Get UTF-8 and UTF-16 encoders.
Dim utf8 As Encoding = Encoding.UTF8
Dim utf16 As Encoding = Encoding.Unicode
' Display the original characters' code units.
Console.WriteLine("Original UTF-16 code units:")
Dim utf16Bytes() As Byte = utf16.GetBytes(chars)
For Each utf16Byte In utf16Bytes
Console.Write("{0:X2} ", utf16Byte)
Console.WriteLine()
Console.WriteLine()
' Display the number of bytes required to encode the array.
Dim reqBytes As Integer = utf8.GetByteCount(chars)
Console.WriteLine("Exact number of bytes required: {0}",
reqBytes)
' Display the maximum byte count.
Dim maxBytes As Integer = utf8.GetMaxByteCount(chars.Length)
Console.WriteLine("Maximum number of bytes required: {0}",
maxBytes)
Console.WriteLine()
' Encode the array of characters.
Dim utf8Bytes() As Byte = utf8.GetBytes(chars)
' Display all the UTF-8-encoded bytes.
Console.WriteLine("UTF-8-encoded code units:")
For Each utf8Byte In utf8Bytes
Console.Write("{0:X2} ", utf8Byte)
Console.WriteLine()
End Sub
End Module
' The example displays the following output:
' Original UTF-16 code units:
' 7A 00 61 00 06 03 FD 01 B2 03 00 D8 54 DD
' Exact number of bytes required: 12
' Maximum number of bytes required: 24
' UTF-8-encoded code units:
' 7A 61 CC 86 C7 BD CE B2 F0 90 85 94
這個屬性會傳回
UTF8Encoding
物件,此物件會將 Unicode (utf-16 編碼的) 字元編碼為每個字元的一到四個位元組序列,並將 utf-8 編碼的位元組陣列解碼為 Unicode (utf-16 編碼的) 字元。 如需 .NET 所支援之字元編碼方式的相關資訊,以及要使用哪些 Unicode 編碼的討論,請參閱
.net 中的字元編碼
。
UTF8Encoding
這個屬性所傳回的物件可能沒有適用于您應用程式的適當行為。
它會傳回一個
UTF8Encoding
物件,該物件會提供 (BOM) 的 Unicode 位元組順序標記。 若要具現化未提供 BOM 的 UTF8 編碼,請呼叫此函式的任何多載
UTF8Encoding
。
它會傳回
UTF8Encoding
物件,該物件使用取代回取代來取代無法編碼的每個字串,而每個位元組無法以問號解碼 ( "?") 字元。 相反地,您可以呼叫此函
UTF8Encoding.UTF8Encoding(Boolean, Boolean)
式來具
UTF8Encoding
現化物件,而該物件的回復是
EncoderFallbackException
或
DecoderFallbackException
,如下列範例所示。
using System;
using System.Text;
public class Example
public static void Main()
Encoding enc = new UTF8Encoding(true, true);
string value = "\u00C4 \uD802\u0033 \u00AE";
try {
byte[] bytes= enc.GetBytes(value);
foreach (var byt in bytes)
Console.Write("{0:X2} ", byt);
Console.WriteLine();
string value2 = enc.GetString(bytes);
Console.WriteLine(value2);
catch (EncoderFallbackException e) {
Console.WriteLine("Unable to encode {0} at index {1}",
e.IsUnknownSurrogate() ?
String.Format("U+{0:X4} U+{1:X4}",
Convert.ToUInt16(e.CharUnknownHigh),
Convert.ToUInt16(e.CharUnknownLow)) :
String.Format("U+{0:X4}",
Convert.ToUInt16(e.CharUnknown)),
e.Index);
// The example displays the following output:
// Unable to encode U+D802 at index 2
Imports System.Text
Module Example
Public Sub Main()
Dim enc As Encoding = New UTF8Encoding(True, True)
Dim value As String = String.Format("{0} {1}{2} {3}",
ChrW(&h00C4), ChrW(&hD802), ChrW(&h0033), ChrW(&h00AE))
Dim bytes() As Byte = enc.GetBytes(value)
For Each byt As Byte In bytes
Console.Write("{0:X2} ", byt)
Console.WriteLine()
Dim value2 As String = enc.GetString(bytes)
Console.WriteLine(value2)
Catch e As EncoderFallbackException
Console.WriteLine("Unable to encode {0} at index {1}",
If(e.IsUnknownSurrogate(),
String.Format("U+{0:X4} U+{1:X4}",
Convert.ToUInt16(e.CharUnknownHigh),
Convert.ToUInt16(e.CharUnknownLow)),
String.Format("U+{0:X4}",
Convert.ToUInt16(e.CharUnknown))),
e.Index)
End Try
End Sub
End Module
' The example displays the following output:
' Unable to encode U+D802 at index 2