UTF8Encoding-Konstruktor (Boolean, Boolean)
Initialisiert eine neue Instanz der UTF8Encoding-Klasse. Parameter geben an, ob eine Unicode-Bytereihenfolgemarkierung bereitgestellt werden soll und ob eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird.
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Sub New ( _
encoderShouldEmitUTF8Identifier As Boolean, _
throwOnInvalidBytes As Boolean _
)
'Usage
Dim encoderShouldEmitUTF8Identifier As Boolean
Dim throwOnInvalidBytes As Boolean
Dim instance As New UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes)
public UTF8Encoding (
bool encoderShouldEmitUTF8Identifier,
bool throwOnInvalidBytes
)
public:
UTF8Encoding (
bool encoderShouldEmitUTF8Identifier,
bool throwOnInvalidBytes
)
public UTF8Encoding (
boolean encoderShouldEmitUTF8Identifier,
boolean throwOnInvalidBytes
)
public function UTF8Encoding (
encoderShouldEmitUTF8Identifier : boolean,
throwOnInvalidBytes : boolean
)
Parameter
- encoderShouldEmitUTF8Identifier
true, um anzugeben, dass eine Unicode-Bytereihenfolgemarkierung bereitgestellt wird, andernfalls false.
- throwOnInvalidBytes
true um anzugeben, dass eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird, andernfalls false.
Hinweise
Wenn throwOnInvalidBytes den Wert true hat, löst eine Methode, die eine ungültige Bytefolge erkennt, eine System.ArgumentException aus. Andernfalls löst die Methode keine Ausnahme aus, und die ungültige Folge wird ignoriert.
Warnung
Aus Sicherheitsgründen wird empfohlen, diesen Konstruktor zum Erstellen einer Instanz der UTF8Encoding-Klasse zu verwenden und die Fehlererkennung durch Festlegen von throwOnInvalidBytes auf true zu aktivieren.
Optional stellt die UTF8Encoding-Klasse eine Präambel bereit. Dabei handelt es sich um ein Bytearray, das der Bytefolge vorangestellt werden kann, die sich aus dem Codierungsvorgang ergibt. Falls die Präambel eine Bytereihenfolgemarkierung (Codepunkt U+FEFF) enthält, kann der Decoder daraus die Bytereihenfolge und das Transformationsformat bzw. UTF ermitteln. Die Unicode-Bytereihenfolgemarkierung wird als EF BB BF (hexadezimal) serialisiert. Die GetPreamble-Methode gibt ein Bytearray zurück, das die Bytereihenfolgemarkierung enthält.
Weitere Informationen über die Unicode-Codierung, die Bytereihenfolge und die Bytereihenfolgemarkierung finden Sie im Unicode-Standard unter http://www.unicode.org (nur auf Englisch verfügbar).
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie eine neue UTF8Encoding-Instanz erstellt wird, die angibt, dass beim Codieren keine Unicode-Bytereihenfolgemarkierung als Präfix ausgegeben werden soll und dass eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird. Das Verhalten dieses Konstruktors wird mit dem Standardkonstruktor für UTF8Encoding verglichen, der bei ungültiger Codierung keine Ausnahme auslöst.
Imports System
Imports System.Text
Imports Microsoft.VisualBasic
'Imports Microsoft.VisualBasic.Strings
Class UTF8EncodingExample
Public Shared Sub Main()
Dim utf8 As New UTF8Encoding()
Dim utf8ThrowException As New UTF8Encoding(False, True)
' This array contains two high surrogates in a row:
' ChrW(55297) and ChrW(55298).
' A high surrogate should be followed by a low surrogate.
Dim chars() As Char = {"a"c, "b"c, "c"c, ChrW(55297), ChrW(55298), "d"c}
' The following method call will not throw an exception.
Dim bytes As Byte() = utf8.GetBytes(chars)
ShowArray(bytes)
Try
' The following method call will throw an exception.
bytes = utf8ThrowException.GetBytes(chars)
Catch e As Exception
Console.WriteLine("Exception raised. " + ControlChars.Cr + "Message: {0}", e.Message)
End Try
End Sub
Public Shared Sub ShowArray(theArray As Array)
Dim o As Object
For Each o In theArray
Console.Write("[{0}]", o)
Next o
Console.WriteLine()
End Sub
End Class
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
UTF8Encoding utf8 = new UTF8Encoding();
UTF8Encoding utf8ThrowException = new UTF8Encoding(false, true);
// This array contains two high surrogates in a row (\uD801, \uD802).
// A high surrogate should be followed by a low surrogate.
Char[] chars = new Char[] {'a', 'b', 'c', '\uD801', '\uD802', 'd'};
// The following method call will not throw an exception.
Byte[] bytes = utf8.GetBytes(chars);
ShowArray(bytes);
try {
// The following method call will throw an exception.
bytes = utf8ThrowException.GetBytes(chars);
} catch (Exception e) {
Console.WriteLine("Exception raised. \nMessage: {0}", e.Message);
}
}
public static void ShowArray(Array theArray) {
foreach (Object o in theArray) {
Console.Write("[{0}]", o);
}
Console.WriteLine();
}
}
using namespace System;
using namespace System::Text;
using namespace System::Collections;
void ShowArray( Array^ theArray )
{
IEnumerator^ myEnum = theArray->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ o = safe_cast<Object^>(myEnum->Current);
Console::Write( "[{0}]", o );
}
Console::WriteLine();
}
int main()
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
UTF8Encoding^ utf8ThrowException = gcnew UTF8Encoding( false,true );
// This array contains two high surrogates in a row (\uD801, \uD802).
// A high surrogate should be followed by a low surrogate.
array<Char>^chars = {'a','b','c',L'\xD801',L'\xD802','d'};
// The following method call will not throw an exception.
array<Byte>^bytes = utf8->GetBytes( chars );
ShowArray( bytes );
try
{
// The following method call will throw an exception.
bytes = utf8ThrowException->GetBytes( chars );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception raised. \nMessage: {0}", e->Message );
}
}
import System.*;
import System.Text.*;
class UTF8EncodingExample
{
public static void main(String[] args)
{
UTF8Encoding utf8 = new UTF8Encoding();
UTF8Encoding utf8ThrowException = new UTF8Encoding(false, true);
// This array contains two high surrogates in a row (\uD801, \uD802).
// A high surrogate should be followed by a low surrogate.
char chars[] = new char[] { 'a', 'b', 'c', '\uD801', '\uD802', 'd' };
// The following method call will not throw an exception.
ubyte bytes[] = utf8.GetBytes(chars);
ShowArray(bytes);
try {
// The following method call will throw an exception.
bytes = utf8ThrowException.GetBytes(chars);
}
catch(System.Exception e) {
Console.WriteLine("Exception raised. \nMessage: {0}",
e.get_Message());
}
} //main
public static void ShowArray(Array theArray)
{
Object o = null;
for (int iCtr=0; iCtr < theArray.get_Count(); iCtr++) {
o = theArray.get_Item(iCtr);
Console.Write("[{0}]", o);
}
Console.WriteLine();
} //ShowArray
} //UTF8EncodingExample
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
UTF8Encoding-Klasse
UTF8Encoding-Member
System.Text-Namespace
GetPreamble