ASCIIEncoding-Klasse
Stellt eine ASCII-Zeichencodierung von Unicode-Zeichen dar.
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ASCIIEncoding
Inherits Encoding
'Usage
Dim instance As ASCIIEncoding
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ASCIIEncoding : Encoding
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class ASCIIEncoding : public Encoding
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public class ASCIIEncoding extends Encoding
SerializableAttribute
ComVisibleAttribute(true)
public class ASCIIEncoding extends Encoding
Hinweise
Beim Codieren werden Unicode-Zeichen in eine Bytefolge transformiert. Beim Decodieren wird dieser Vorgang umgekehrt: Eine Folge codierter Bytes wird dabei in Unicode-Zeichen transformiert.
Gemäß Unicode-Standard wird jedem Zeichen aller unterstützten Schriften ein Codepunkt (eine Zahl) zugewiesen. Dieser Codepunkt kann beispielsweise mit UTF (Unicode Transformation Format) codiert werden. Im Unicode-Standard, Version 3.2, werden folgende UTF-Arten verwendet:
UTF-8, bei dem jeder Codepunkt als eine Folge von ein bis vier Bytes dargestellt wird.
UTF-16, bei dem jeder Codepunkt als eine Folge von ein bis zwei 16-Bit-Ganzzahlen dargestellt wird.
UTF-32, bei dem jeder Codepunkt als eine 32-Bit-Ganzzahl dargestellt wird.
Warnung
ASCIIEncoding stellt keine Fehlererkennung bereit. Aus Sicherheitsgründen wird empfohlen, UTF8Encoding, UnicodeEncoding oder UTF32Encoding zu verwenden und die Fehlererkennung zu aktivieren.
Hinweis
ASCIIEncoding unterstützt nur Unicode-Zeichenwerte zwischen U+0000 und U+007F. Deshalb sind UTF8Encoding, UnicodeEncoding und UTF32Encoding für globalisierte Anwendungen besser geeignet.
Die GetByteCount-Methode bestimmt, wie viele Bytes sich beim Codieren einer Reihe von Unicode-Zeichen ergeben, und die GetBytes-Methode führt die eigentliche Codierung aus.
Aanalog dazu bestimmt die GetCharCount-Methode, wie viele Zeichen sich aus der Decodierung einer Bytefolge ergeben, und die GetChars-Methode und die GetString-Methode führen die eigentliche Decodierung aus.
ASCIIEncoding entspricht der Windows-Codepage 20127.
Beispiel
Im folgenden Beispiel wird das Codieren von Unicode-Zeichen in ASCII-Zeichen veranschaulicht. Beachten Sie den Datenverlust, der auftritt, wenn Sie ASCIIEncoding zum Codieren von Unicode-Zeichen außerhalb des ASCII-Bereichs verwenden.
Imports System
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class ASCIIEncodingExample
Public Shared Sub Main()
' The encoding.
Dim ascii As New ASCIIEncoding()
' A Unicode string with two characters outside the ASCII code range.
Dim unicodeString As String = _
"This Unicode string contains two characters " & _
"with codes outside the ASCII code range, " & _
"Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
' Save positions of the special characters for later reference.
Dim indexOfPi As Integer = unicodeString.IndexOf(ChrW(928))
Dim indexOfSigma As Integer = unicodeString.IndexOf(ChrW(931))
' Encode string.
Dim encodedBytes As Byte() = ascii.GetBytes(unicodeString)
Console.WriteLine()
Console.WriteLine("Encoded bytes:")
Dim b As Byte
For Each b In encodedBytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
' Notice that the special characters have been replaced with
' the value 63, which is the ASCII character code for '?'.
Console.WriteLine()
Console.WriteLine( _
"Value at position of Pi character: {0}", _
encodedBytes(indexOfPi) _
)
Console.WriteLine( _
"Value at position of Sigma character: {0}", _
encodedBytes(indexOfSigma) _
)
' Decode bytes back to string.
' Notice missing Pi and Sigma characters.
Dim decodedString As String = ascii.GetString(encodedBytes)
Console.WriteLine()
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub 'Main
End Class 'ASCIIEncodingExample
using System;
using System.Text;
class ASCIIEncodingExample {
public static void Main() {
// The encoding.
ASCIIEncoding ascii = new ASCIIEncoding();
// A Unicode string with two characters outside the ASCII code range.
String unicodeString =
"This Unicode string contains two characters " +
"with codes outside the ASCII code range, " +
"Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Save positions of the special characters for later reference.
int indexOfPi = unicodeString.IndexOf('\u03a0');
int indexOfSigma = unicodeString.IndexOf('\u03a3');
// Encode string.
Byte[] encodedBytes = ascii.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
foreach (Byte b in encodedBytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
// Notice that the special characters have been replaced with
// the value 63, which is the ASCII character code for '?'.
Console.WriteLine();
Console.WriteLine(
"Value at position of Pi character: {0}",
encodedBytes[indexOfPi]
);
Console.WriteLine(
"Value at position of Sigma character: {0}",
encodedBytes[indexOfSigma]
);
// Decode bytes back to string.
// Notice missing Pi and Sigma characters.
String decodedString = ascii.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
using namespace System;
using namespace System::Collections;
using namespace System::Text;
int main()
{
// The encoding.
ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
// A Unicode string with two characters outside the ASCII code range.
String^ unicodeString = "This Unicode String* contains two characters with codes outside the ASCII code range, Pi (\u03a0) and Sigma (\u03a3).";
Console::WriteLine( "Original String*:" );
Console::WriteLine( unicodeString );
// Save positions of the special characters for later reference.
int indexOfPi = unicodeString->IndexOf( L'\u03a0' );
int indexOfSigma = unicodeString->IndexOf( L'\u03a3' );
// Encode string.
array<Byte>^encodedBytes = ascii->GetBytes( unicodeString );
Console::WriteLine();
Console::WriteLine( "Encoded bytes:" );
IEnumerator^ myEnum = encodedBytes->GetEnumerator();
while ( myEnum->MoveNext() )
{
Byte b = safe_cast<Byte>(myEnum->Current);
Console::Write( "->Item[ {0}]", b );
}
Console::WriteLine();
// Notice that the special characters have been replaced with
// the value 63, which is the ASCII character code for '?'.
Console::WriteLine();
Console::WriteLine( "Value at position of Pi character: {0}", encodedBytes[ indexOfPi ] );
Console::WriteLine( "Value at position of Sigma character: {0}", encodedBytes[ indexOfSigma ] );
// Decode bytes back to string.
// Notice missing Pi and Sigma characters.
String^ decodedString = ascii->GetString( encodedBytes );
Console::WriteLine();
Console::WriteLine( "Decoded bytes:" );
Console::WriteLine( decodedString );
}
import System.*;
import System.Text.*;
import System.Byte;
class ASCIIEncodingExample
{
public static void main(String[] args)
{
// The encoding.
ASCIIEncoding ascii = new ASCIIEncoding();
// A Unicode string with two characters outside the ASCII code range.
String unicodeString = "This Unicode string contains two characters "
+ "with codes outside the ASCII code range, "
+ "Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Save positions of the special characters for later reference.
int indexOfPi = unicodeString.IndexOf('\u03a0');
int indexOfSigma = unicodeString.IndexOf('\u03a3');
// Encode string.
ubyte encodedBytes[] = ascii.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
for(int iCtr = 0; iCtr < encodedBytes.length; iCtr++) {
ubyte b = encodedBytes[iCtr];
Console.Write("[{0}]", String.valueOf((Byte)b));
}
Console.WriteLine();
// Notice that the special characters have been replaced with
// the value 63, which is the ASCII character code for '?'.
Console.WriteLine();
Console.WriteLine("Value at position of Pi character: {0}",
encodedBytes.get_Item(indexOfPi));
Console.WriteLine("Value at position of Sigma character: {0}",
encodedBytes.get_Item(indexOfSigma));
// Decode bytes back to string.
// Notice missing Pi and Sigma characters.
String decodedString = ascii.GetString((ubyte[])encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
} //main
} //ASCIIEncodingExample
Vererbungshierarchie
System.Object
System.Text.Encoding
System.Text.ASCIIEncoding
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
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