Encoding.UTF8 Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan pengodean untuk format UTF-8.
public:
static property System::Text::Encoding ^ UTF8 { System::Text::Encoding ^ get(); };
public static System.Text.Encoding UTF8 { get; }
static member UTF8 : System.Text.Encoding
Public Shared ReadOnly Property UTF8 As Encoding
Nilai Properti
Pengodean untuk format UTF-8.
Contoh
Contoh berikut mendefinisikan array yang terdiri dari karakter berikut:
HURUF LATIN KECIL Z (U+007A)
HURUF LATIN KECIL A (U+0061)
MENGGABUNGKAN BREVE (U+0306)
HURUF LATIN KECIL AE DENGAN AKUT (U+01FD)
YUNANI KECIL HURUF BETA (U+03B2)
Pasangan pengganti (U+D800 U+DD54) yang membentuk GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS (U+10154).
Ini menampilkan unit kode UTF-16 dari setiap karakter dan menentukan jumlah byte yang diperlukan oleh encoder UTF-8 untuk mengodekan array karakter. Kemudian mengodekan karakter dan menampilkan byte yang dikodekan UTF-8 yang dihasilkan.
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)
Next
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)
Next
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
Keterangan
Properti ini mengembalikan UTF8Encoding objek yang mengodekan karakter Unicode (dikodekan UTF-16) ke dalam urutan satu hingga empat byte per karakter, dan yang mendekode array byte yang dikodekan UTF-8 ke karakter Unicode (berkode UTF-16). Untuk informasi tentang pengodean karakter yang didukung oleh .NET dan diskusi tentang pengodean Unicode mana yang akan digunakan, lihat pengodean Character di .NET.
Objek UTF8Encoding yang dikembalikan oleh properti ini mungkin tidak memiliki perilaku yang sesuai untuk aplikasi Anda.
Ini mengembalikan UTF8Encoding objek yang menyediakan tanda urutan byte Unicode (BOM). Untuk membuat instans pengodean UTF8 yang tidak menyediakan BOM, panggil kelebihan beban UTF8Encoding konstruktor.
Ini mengembalikan UTF8Encoding objek yang menggunakan fallback pengganti untuk mengganti setiap string yang tidak dapat dikodekan dan setiap byte yang tidak dapat didekodekan dengan karakter tanda tanya ("?"). Sebagai gantinya UTF8Encoding.UTF8Encoding(Boolean, Boolean) , Anda dapat memanggil konstruktor untuk membuat UTF8Encoding instans objek yang fallback-nya adalah atau EncoderFallbackExceptionDecoderFallbackException, seperti yang diilustrasikan contoh berikut.
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 2Imports 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)) Try Dim bytes() As Byte = enc.GetBytes(value) For Each byt As Byte In bytes Console.Write("{0:X2} ", byt) Next 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