Encoding-Klasse

Stellt eine Zeichencodierung dar.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Encoding
    Implements ICloneable
'Usage
Dim instance As Encoding
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Encoding : ICloneable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class Encoding abstract : ICloneable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Encoding implements ICloneable
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Encoding implements ICloneable

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 UTFs 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.

.NET-Framework stellt folgende Implementierungen der Encoding-Klasse zur Unterstützung der aktuellen Unicode-Codierungen und anderer Codierungen bereit:

  • ASCIIEncoding codiert Unicode-Zeichen als einzelne 7-Bit-ASCII-Zeichen. Diese Codierung unterstützt nur Zeichenwerte zwischen U+0000 und U+007F. Codepage 20127. Auch verfügbar durch die ASCII-Eigenschaft.

  • UTF7Encoding codiert Unicode-Zeichen mit der UTF-7-Codierung. Diese Codierung unterstützt alle Unicode-Zeichenwerte. Codepage 65000. Auch verfügbar durch die UTF7-Eigenschaft.

  • UTF8Encoding codiert Unicode-Zeichen mit der UTF-8-Codierung. Diese Codierung unterstützt alle Unicode-Zeichenwerte. Codepage 65001. Auch verfügbar durch die UTF8-Eigenschaft.

  • UnicodeEncoding codiert Unicode-Zeichen mit der UTF-16-Codierung. Dabei werden die Bytereihenfolgen Little-Endian (Codepage 1200) und Big-Endian (Codepage 1201) unterstützt. Auch verfügbar durch die Unicode-Eigenschaft und die BigEndianUnicode-Eigenschaft.

  • UTF32Encoding codiert Unicode-Zeichen mit der UTF-32-Codierung. Dabei werden die Bytereihenfolgen Little-Endian (Codepage 65005) und Big-Endian (Codepage 65006) unterstützt. Auch verfügbar durch die UTF32-Eigenschaft.

Verwenden Sie die GetEncoding-Methode, um andere Codierungen zu erhalten. Verwenden Sie die GetEncodings-Methode, um eine Liste mit allen Codierungen abzurufen.

In der folgenden Tabelle sind die Codierungen und ihre zugeordneten Codepages aufgeführt. Ein Sternchen in der letzten Spalte zeigt an, dass die Codepage unabhängig von der zugrunde liegenden Plattform von .NET Framework unterstützt wird.

Codepage

Name

Anzeigename

37

IBM037

IBM EBCDIC (USA-Kanada)

437

IBM437

OEM USA

500

IBM500

IBM EBCDIC (International)

708

ASMO-708

Arabisch (ASMO 708)

720

DOS-720

Arabisch (DOS)

737

ibm737

Griechisch (DOS)

775

ibm775

Baltisch (DOS)

850

ibm850

Westeuropäisch (DOS)

852

ibm852

Osteuropäisch (DOS)

855

IBM855

OEM Kyrillisch

857

ibm857

Türkisch (DOS)

858

IBM00858

OEM Multilingual Lateinisch I

860

IBM860

Portugiesisch (DOS)

861

ibm861

Isländisch (DOS)

862

DOS-862

Hebräisch (DOS)

863

IBM863

Französisch, Kanada (DOS)

864

IBM864

Arabisch (864)

865

IBM865

Nordisch (DOS)

866

cp866

Kyrillisch (DOS)

869

ibm869

Griechisch, modern (DOS)

870

IBM870

IBM EBCDIC (Multilingual Lateinisch-2)

874

windows-874

Thailändisch (Windows)

875

cp875

IBM EBCDIC (Griechisch, modern)

932

shift_jis

Japanisch (Shift-JIS)

936

gb2312

Chinesisch vereinfacht (GB2312)

*

949

ks_c_5601-1987

Koreanisch

950

big5

Chinesisch (Traditionell) (Big5)

1026

IBM1026

IBM EBCDIC (Türkisch, Latin-5)

1047

IBM01047

IBM Lateinisch-1

1140

IBM01140

IBM EBCDIC (USA-Kanada-Europäisch)

1141

IBM01141

IBM EBCDIC (Deutschland-Europäisch)

1142

IBM01142

IBM EBCDIC (Dänemark-Norwegen-Europäisch)

1143

IBM01143

IBM EBCDIC (Finnland-Schweden-Europäisch)

1144

IBM01144

IBM EBCDIC (Italien-Europäisch)

1145

IBM01145

IBM EBCDIC (Spanien-Europäisch)

1146

IBM01146

IBM EBCDIC (Großbritannien-Europäisch)

1147

IBM01147

IBM EBCDIC (Frankreich-Europäisch)

1148

IBM01148

IBM EBCDIC (International-Europäisch)

1149

IBM01149

IBM EBCDIC (Isländisch-Europäisch)

1200

utf-16

Unicode

*

1201

unicodeFFFE

Unicode (Big-Endian)

*

1250

windows-1250

Mitteleuropäisch (Windows)

1251

windows-1251

Kyrillisch (Windows)

1252

Windows-1252

Westeuropäisch (Windows)

*

1253

windows-1253

Griechisch (Windows)

1254

windows-1254

Türkisch (Windows)

1255

windows-1255

Hebräisch (Windows)

1256

windows-1256

Arabisch (Windows)

1257

windows-1257

Baltisch (Windows)

1258

windows-1258

Vietnamesisch (Windows)

1361

Johab

Koreanisch (Johab)

10000

macintosh

Westeuropäisch (Mac)

10001

x-mac-japanese

Japanisch (Mac)

10002

x-mac-chinesetrad

Chinesisch traditionell (Mac)

10003

x-mac-korean

Koreanisch (Mac)

*

10004

x mac-arabic

Arabisch (Mac)

10005

x-mac-hebrew

Hebräisch (Mac)

10006

x-mac-greek

Griechisch (Mac)

10007

x-mac-cyrillic

Kyrillisch (Mac)

10008

x-mac-chinesesimp

Chinesisch vereinfacht (Mac)

*

10010

x-mac-romanian

Rumänisch (Mac)

10017

x-mac-ukrainian

Ukrainisch (Mac)

10021

x-mac-thai

Thailändisch (Mac)

10029

x-mac-ce

Mitteleuropäisch (Mac)

10079

x-mac-icelandic

Isländisch (Mac)

10081

x-mac-turkish

Türkisch (Mac)

10082

x-mac-croatian

Kroatisch (Mac)

20000

x-Chinese-CNS

Chinesisch traditionell (CNS)

20001

x-cp20001

TCA Taiwan

20002

x-Chinese-Eten

Chinesisch traditionell (Eten)

20003

x-cp20003

IBM5550 Taiwan

20004

x-cp20004

TeleText Taiwan

20005

x-cp20005

Wang Taiwan

20105

x-IA5

Westeuropäisch (IA5)

20106

x-IA5-German

Deutsch (IA5)

20107

x-IA5-Swedish

Schwedisch (IA5)

20108

x-IA5-Norwegian

Norwegisch (IA5)

20127

us-ascii

US-ASCII

*

20261

x-cp20261

T.61

20269

x-cp20269

ISO-6937

20273

IBM273

IBM EBCDIC (Deutschland)

20277

IBM277

IBM EBCDIC (Dänemark-Norwegen)

20278

IBM278

IBM EBCDIC (Finnland-Schweden)

20280

IBM280

IBM EBCDIC (Italien)

20284

IBM284

IBM EBCDIC (Spanien)

20285

IBM285

IBM EBCDIC (Großbritannien)

20290

IBM290

IBM EBCDIC (Japanisch Katakana)

20297

IBM297

IBM EBCDIC (Frankreich)

20420

IBM420

IBM EBCDIC (Arabisch)

20423

IBM423

IBM EBCDIC (Griechisch)

20424

IBM424

IBM EBCDIC (Hebräisch)

20833

x-EBCDIC-KoreanExtended

IBM EBCDIC (Koreanisch, erweitert)

20838

IBM-Thai

IBM EBCDIC (Thailändisch)

20866

koi8-r

Kyrillisch (KOI8-R)

20871

IBM871

IBM EBCDIC (Isländisch)

20880

IBM880

IBM EBCDIC (Kyrillisch, Russisch)

20905

IBM905

IBM EBCDIC (Türkisch)

20924

IBM00924

IBM Lateinisch-1

20932

EUC-JP

Japanisch (JIS 0208-1990 und 0212-1990)

20936

x-cp20936

GB2312-80 Chinesisch (vereinfacht)

*

20949

x-cp20949

Koreanisch Wansung

*

21025

cp1025

IBM EBCDIC (Kyrillisch, Serbisch-Bulgarisch)

21866

koi8-u

Kyrillisch (KOI8-U)

28591

iso-8859-1

Westeuropäisch (ISO)

*

28592

iso-8859-2

Mitteleuropäisch (ISO)

28593

iso-8859-3

Lateinisch 3 (ISO)

28594

iso-8859-4

Baltisch (ISO)

28595

iso-8859-5

Kyrillisch (ISO)

28596

iso-8859-6

Arabisch (ISO)

28597

iso-8859-7

Griechisch (ISO)

28598

iso-8859-8

Hebräisch (ISO-Visual)

*

28599

iso-8859-9

Türkisch (ISO)

28603

iso-8859-13

Estnisch (ISO)

28605

iso-8859-15

Lateinisch 9 (ISO)

29001

x-Europa

Europa

38598

iso-8859-8-i

Hebräisch (ISO-Logical)

*

50220

iso-2022-jp

Japanisch (JIS)

*

50221

csISO2022JP

Japanisch (JIS, 1 Byte Kana erlaubt)

*

50222

iso-2022-jp

Japanisch (JIS, 1 Byte Kana erlaubt - SO/SI)

*

50225

iso-2022-kr

Koreanisch (ISO)

*

50227

x-cp50227

ISO-2022 Chinesisch (vereinfacht)

*

51932

euc-jp

Japanisch (EUC)

*

51936

EUC-CN

Chinesisch vereinfacht (EUC)

*

51949

euc-kr

Koreanisch (EUC)

*

52936

hz-gb-2312

Chinesisch vereinfacht (HZ)

*

54936

GB18030

GB18030 Chinesisch vereinfacht

*

57002

x-iscii-de

ISCII Devanagari

*

57003

x-iscii-be

ISCII Bengali

*

57004

x-iscii-ta

ISCII Tamil

*

57005

x-iscii-te

ISCII Telugu

*

57006

x-iscii as

ISCII Assamese

*

57007

x-iscii-or

ISCII Oriya

*

57008

x-iscii-ka

ISCII Kannada

*

57009

x-iscii-ma

ISCII Malayalam

*

57010

x-iscii-gu

ISCII Gujarati

*

57011

x-iscii-pa

ISCII Punjabi

*

65000

utf-7

Unicode (UTF-7)

*

65001

utf-8

Unicode (UTF-8)

*

65005

utf-32

Unicode (UTF-32)

*

65006

utf-32BE

Unicode (UTF-32-Big-Endian)

*

Die GetByteCount-Methode bestimmt, wie viele Bytes zum Codieren von Unicode-Zeichen benötigt werden, und die GetBytes-Methode führt die tatsächliche Codierung aus.

Ebenso bestimmt die GetCharCount-Methode, wie viele Zeichen sich aus der Decodierung einer Bytefolge ergeben, und die GetChars-Methode führt die tatsächliche Decodierung aus.

Wenn die zu konvertierenden Daten nur als sequenzielle Blöcke verfügbar sind (z. B. aus einem Stream gelesene Daten) oder wenn die Datenmenge so groß ist, dass sie in kleinere Blöcke aufgeteilt werden muss, verwenden Sie Decoder oder Encoder, die von der GetDecoder-Methode bzw. der GetEncoder-Methode einer abgeleiteten Klasse bereitgestellt werden.

Die UTF-16- und UTF-32-Encoder können die Big-Endian-Bytereihenfolge (mit dem höchstwertigen Byte an erster Stelle) oder die Little-Endian-Bytereihenfolge (mit dem niedrigstwertigen Byte an erster Stelle) verwenden. Beispielsweise wird der lateinische Großbuchstabe A (U+0041) wie folgt serialisiert (Hexadezimalwert):

  • UTF-16-Big-Endian-Bytereihenfolge: 00 41

  • UTF-16-Little-Endian-Bytereihenfolge: 41 00

  • UTF-32-Big-Endian-Bytereihenfolge: 00 00 00 41

  • UTF-32-Little-Endian-Bytereihenfolge: 41 00 00 00

Optional stellt Encoding eine Präambel bereit. Dabei handelt es sich um ein Bytearray, das der Bytefolge vorangestellt werden kann, die sich aus dem Codierungsprozess ergibt. Falls die Präambel eine Bytereihenfolgemarkierung (in Unicode: Codepunkt U+FEFF) enthält, kann der Decoder daraus die Bytereihenfolge und das Transformationsformat bzw. UTF ermitteln. Die Unicode-Bytereihenfolgemarkierung wird wie folgt serialisiert (hexadezimal):

  • UTF-8: EF BB BF

  • UTF-16-Big-Endian-Bytereihenfolge: FE FF

  • UTF-16-Little-Endian-Bytereihenfolge: FF FE

  • UTF-32-Big-Endian-Bytereihenfolge: 00 00 FE FF

  • UTF-32-Little-Endian-Bytereihenfolge: FF FE 00 00

Im Allgemeinen ist es effizienter, Unicode-Zeichen in der systemeigenen Bytereihenfolge zu speichern. So ist es besser, die Little-Endian-Bytereihenfolge auf entsprechenden Plattformen, beispielsweise auf Intel-Computern, zu verwenden.

Die GetPreamble-Methode gibt ein Bytearray zurück, das die Bytereihenfolgemarkierung enthalten kann. Wenn dieses Bytearray einem codierten Stream vorangestellt ist, unterstützt es den Decoder bei der Ermittlung des verwendeten Codierungsformats.

Weitere Informationen über die Bytereihenfolge und die Bytereihenfolgemarkierung finden Sie im Unicode-Standard unter http://www.unicode.org (nur auf Englisch verfügbar).

Beispiel

Im folgenden Codebeispiel wird eine Zeichenfolge von einer Codierung in eine andere konvertiert.

Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Namespace Convert_Example
    Class MyConvertExampleClass
        Shared Sub Main()
            Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")"

            ' Create two different encodings.
            Dim ascii As Encoding = Encoding.ASCII
            Dim [unicode] As Encoding = Encoding.Unicode

            ' Convert the string into a byte[].
            Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)

            ' Perform the conversion from one encoding to the other.
            Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)

            ' Convert the new byte[] into a char[] and then into a string.
            ' This is a slightly different approach to converting to illustrate
            ' the use of GetCharCount/GetChars.
            Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char
            ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
            Dim asciiString As New String(asciiChars)

            ' Display the strings created before and after the conversion.
            Console.WriteLine("Original string: {0}", unicodeString)
            Console.WriteLine("Ascii converted string: {0}", asciiString)
        End Sub
    End Class
End Namespace
using System;
using System.Text;

namespace ConvertExample
{
   class ConvertExampleClass
   {
      static void Main()
      {
         string unicodeString = "This string contains the unicode character Pi(\u03a0)";

         // Create two different encodings.
         Encoding ascii = Encoding.ASCII;
         Encoding unicode = Encoding.Unicode;

         // Convert the string into a byte[].
         byte[] unicodeBytes = unicode.GetBytes(unicodeString);

         // Perform the conversion from one encoding to the other.
         byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
            
         // Convert the new byte[] into a char[] and then into a string.
         // This is a slightly different approach to converting to illustrate
         // the use of GetCharCount/GetChars.
         char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
         ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
         string asciiString = new string(asciiChars);

         // Display the strings created before and after the conversion.
         Console.WriteLine("Original string: {0}", unicodeString);
         Console.WriteLine("Ascii converted string: {0}", asciiString);
      }
   }
}
using namespace System;
using namespace System::Text;
int main()
{
   String^ unicodeString = "This string contains the unicode character Pi(\u03a0)";
   
   // Create two different encodings.
   Encoding^ ascii = Encoding::ASCII;
   Encoding^ unicode = Encoding::Unicode;
   
   // Convert the string into a Byte->Item[].
   array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );
   
   // Perform the conversion from one encoding to the other.
   array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );
   
   // Convert the new Byte into[] a char and[] then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
   ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
   String^ asciiString = gcnew String( asciiChars );
   
   // Display the strings created before and after the conversion.
   Console::WriteLine( "Original String*: {0}", unicodeString );
   Console::WriteLine( "Ascii converted String*: {0}", asciiString );
}
package ConvertExample; 

import System.*;
import System.Text.*;

class ConvertExampleClass
{
    public static void main(String[] args)
    {
        String unicodeString = 
                "This string contains the unicode character Pi(\u03a0)";

        // Create two different encodings.
        Encoding ascii = Encoding.get_ASCII();
        Encoding unicode = Encoding.get_Unicode();

        // Convert the string into a byte[].
        ubyte unicodeBytes[] = unicode.GetBytes(unicodeString);

        // Perform the conversion from one encoding to the other.
        ubyte asciiBytes[] = Encoding.Convert(unicode, ascii, unicodeBytes);

        // Convert the new byte[] into a char[] and then into a string.
        // This is a slightly different approach to converting to illustrate
        // the use of GetCharCount/GetChars.
        char asciiChars[] = new 
                char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.length)];
        ascii.GetChars(asciiBytes, 0, asciiBytes.length, asciiChars, 0);
        String asciiString = new String(asciiChars);

        // Display the strings created before and after the conversion.
        Console.WriteLine("Original string: {0}", unicodeString);
        Console.WriteLine("Ascii converted string: {0}", asciiString);
    } //main
} //ConvertExampleClass 

Vererbungshierarchie

System.Object
  System.Text.Encoding
     Abgeleitete Klassen

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

Siehe auch

Referenz

Encoding-Member
System.Text-Namespace