Encoding.UTF8 Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
UTF-8 biçimi için bir kodlama alır.
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
Özellik Değeri
UTF-8 biçimi için bir kodlama.
Örnekler
Aşağıdaki örnek, aşağıdaki karakterlerden oluşan bir dizi tanımlar:
LATIN KÜÇÜK HARFI Z (U+007A)
LATIN KÜÇÜK HARF A (U+0061)
BREVE'I BIRLEŞTIRME (U+0306)
LATIN KÜÇÜK HARFLI AE VE LATIN (U+01FD)
YUNANCA KÜÇÜK HARF BETA (U+03B2)
YUNANCA ACROOFIC ATTIC ONE THOUSAND STATERS (U+10154) oluşturan bir yedek çift (U+D800 U+DD54).
Her karakterin UTF-16 kod birimlerini görüntüler ve bir UTF-8 kodlayıcısı tarafından karakter dizisini kodlamak için gereken bayt sayısını belirler. Ardından karakterleri kodlar ve sonuçta elde edilen UTF-8 ile kodlanmış baytları görüntüler.
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
Açıklamalar
Bu özellik, Unicode (UTF-16 kodlamalı) karakterleri karakter başına bir veya dört baytlık bir diziye kodlayan ve UTF-8 ile kodlanmış bayt dizisinin kodunu UTF8Encoding Unicode (UTF-16 kodlamalı) karakterlere çözen bir nesne döndürür. .NET tarafından desteklenen karakter kodlamaları ve kullanılacak Unicode kodlaması hakkında bilgi için bkz. .NET'te Karakter Kodlaması.
Bu UTF8Encoding özellik tarafından döndürülen nesne, uygulamanıza uygun davranışa sahip olabilir.
Unicode UTF8Encoding byte sipariş işareti (BOM) sağlayan bir nesne döndürür. BOM sağlan bir UTF8 kodlaması örneği için oluşturucu herhangi bir aşırı UTF8Encoding yüklemesini çağırır.
Kodlayamadı her dizeyi ve bir soru işareti ("?") karakteriyle kodunu çözemeyilen her bir bayta değiştirmek için değiştirme geri dönüş kullanan UTF8Encoding bir nesne döndürür. Bunun yerine, aşağıdaki örnekte gösterildiği gibi, geri dönüş bir veya olan bir nesneyi örneği için UTF8Encoding.UTF8Encoding(Boolean, Boolean) UTF8Encoding oluşturucu EncoderFallbackException DecoderFallbackException çağırabilirsiniz.
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)) 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