Encoding.GetString Methode

Definitie

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een reeks bytes in een tekenreeks gedecodeerd.

Overloads

Name Description
GetString(Byte[], Int32, Int32)

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix in een tekenreeks.

GetString(Byte*, Int32)

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een opgegeven aantal bytes dat begint bij een opgegeven adres in een tekenreeks.

GetString(Byte[])

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u alle bytes in de opgegeven bytematrix in een tekenreeks.

GetString(ReadOnlySpan<Byte>)

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u alle bytes in de opgegeven byte span in een tekenreeks.

GetString(Byte[], Int32, Int32)

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix in een tekenreeks.

public:
 virtual System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public virtual string GetString(byte[] bytes, int index, int count);
abstract member GetString : byte[] * int * int -> string
override this.GetString : byte[] * int * int -> string
Public Overridable Function GetString (bytes As Byte(), index As Integer, count As Integer) As String

Parameters

bytes
Byte[]

De bytematrix met de reeks bytes die moet worden gedecodeerd.

index
Int32

De index van de eerste byte om te decoderen.

count
Int32

Het aantal bytes dat moet worden gedecodeerd.

Retouren

Een tekenreeks die de resultaten bevat van het decoderen van de opgegeven reeks bytes.

Uitzonderingen

De bytematrix bevat ongeldige Unicode-codepunten.

bytes is null.

index of count kleiner is dan nul.

– of –

index en count geef geen geldig bereik aan in bytes.

Er is een terugval opgetreden (zie Character Encoding in .NET)

en

DecoderFallback is ingesteld op DecoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld wordt een UTF-8 gecodeerde tekenreeks gelezen uit een binair bestand dat wordt vertegenwoordigd door een FileStream object. Voor bestanden die kleiner zijn dan 2048 bytes, wordt de inhoud van het hele bestand in een bytematrix gelezen en wordt de GetString(Byte[], Int32, Int32) methode aangeroepen om de decodering uit te voeren. Voor grotere bestanden worden 2048 bytes tegelijk in een bytematrix gelezen, wordt de Decoder.GetCharCount(Byte[], Int32, Int32) methode aangeroepen om te bepalen hoeveel tekens in de matrix zijn opgenomen en wordt de methode aangeroepen om de Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) decodering uit te voeren.

using System;
using System.IO;
using System.Text;

public class Example
{
   const int MAX_BUFFER_SIZE = 2048;
   static Encoding enc8 = Encoding.UTF8;
   static byte[] bytes = new byte[MAX_BUFFER_SIZE]; 

   public static void Main()
   {
      FileStream fStream = new FileStream(@".\Utf8Example.txt", FileMode.Open);
      string contents = null;
      
      // If file size is small, read in a single operation.
      if (fStream.Length <= MAX_BUFFER_SIZE) {
         int bytesRead = fStream.Read(bytes, 0, bytes.Length);
         contents = enc8.GetString(bytes, 0, bytesRead);
      }   
      // If file size exceeds buffer size, perform multiple reads.
      else {
         contents = ReadFromBuffer(fStream);
      }
      fStream.Close();
      Console.WriteLine(contents);
   }

    private static string ReadFromBuffer(FileStream fStream)
    {
        string output = String.Empty;
        Decoder decoder8 = enc8.GetDecoder();
      
        while (fStream.Position < fStream.Length) {
           int nBytes = fStream.Read(bytes, 0, bytes.Length);
           int nChars = decoder8.GetCharCount(bytes, 0, nBytes);
           char[] chars = new char[nChars];
           nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0);
           output += new String(chars, 0, nChars);                                                     
        }
        return output;
    }   
}
// The example displays the following output:
//     This is a UTF-8-encoded file that contains primarily Latin text, although it
//     does list the first twelve letters of the Russian (Cyrillic) alphabet:
//     
//     А б в г д е ё ж з и й к
//     
//     The goal is to save this file, then open and decode it as a binary stream.
Imports System.IO
Imports System.Text

Module Example
   Const MAX_BUFFER_SIZE As Integer = 2048
   
   Dim enc8 As Encoding = Encoding.UTF8
   Dim bytes(MAX_BUFFER_SIZE -1) As Byte
      
   Public Sub Main()
      Dim fStream As New FileStream(".\Utf8Example.txt", FileMode.Open)
      Dim contents As String = Nothing
      
      ' If file size is small, read in a single operation.
      If fStream.Length <= MAX_BUFFER_SIZE Then
         
         Dim bytesRead As Integer = fStream.Read(bytes, 0, bytes.Length)
         contents = enc8.GetString(bytes, 0, bytesRead)
      ' If file size exceeds buffer size, perform multiple reads.
      Else
         contents = ReadFromBuffer(fStream)
      End If
      fStream.Close()
      Console.WriteLine(contents)
   End Sub   

    Private Function ReadFromBuffer(fStream As FileStream) As String
        Dim bytes(MAX_BUFFER_SIZE) As Byte
        Dim output As String = String.Empty
        Dim decoder8 As Decoder = enc8.GetDecoder()
      
        Do While fStream.Position < fStream.Length
           Dim nBytes As Integer = fStream.Read(bytes, 0, bytes.Length)
           Dim nChars As Integer = decoder8.GetCharCount(bytes, 0, nBytes)
           Dim chars(nChars - 1) As Char
           nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0)
           output += New String(chars, 0, nChars)                                                     
        Loop
        Return output
    End Function
End Module
' The example displays the following output:
'     This is a UTF-8-encoded file that contains primarily Latin text, although it
'     does list the first twelve letters of the Russian (Cyrillic) alphabet:
'     
'     А б в г д е ё ж з и й к
'     
'     The goal is to save this file, then open and decode it as a binary stream.

In het voorbeeld wordt de volgende tekst gebruikt, die moet worden opgeslagen in een UTF-8-gecodeerd bestand met de naam Utf8Example.txt.

This is a UTF-8-encoded file that contains primarily Latin text, although it
does list the first twelve letters of the Russian (Cyrillic) alphabet:

А б в г д е ё ж з и й к

The goal is to save this file, then open and decode it as a binary stream.

Opmerkingen

Als de gegevens die moeten worden geconverteerd alleen beschikbaar zijn in opeenvolgende blokken (zoals gegevens die uit een stroom worden gelezen) of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet u de Decoder of de Encoder gebruiken die wordt geleverd door de GetDecoder methode of de GetEncoder methode, respectievelijk van een afgeleide klasse.

Zie het gedeelte Opmerkingen van het Encoding.GetChars naslagonderwerp voor een bespreking van de coderingstechnieken en overwegingen.

Zie ook

Van toepassing op

GetString(Byte*, Int32)

Belangrijk

Deze API is niet CLS-conform.

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een opgegeven aantal bytes dat begint bij een opgegeven adres in een tekenreeks.

public:
 System::String ^ GetString(System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public string GetString(byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public string GetString(byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public string GetString(byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
member this.GetString : nativeptr<byte> * int -> string

Parameters

bytes
Byte*

Een aanwijzer naar een bytematrix.

byteCount
Int32

Het aantal bytes dat moet worden gedecodeerd.

Retouren

Een tekenreeks die de resultaten bevat van het decoderen van de opgegeven reeks bytes.

Kenmerken

Uitzonderingen

bytes is een null-aanwijzer.

byteCount is kleiner dan nul.

Er is een terugval opgetreden (zie Character Encoding in .NET voor een volledige uitleg)

en

DecoderFallback is ingesteld op DecoderExceptionFallback.

Opmerkingen

De GetString methode is ontworpen om de prestaties te optimaliseren wanneer u een systeemeigen aanwijzer naar een bytematrix hebt. In plaats van een beheerde bytematrix te maken en deze vervolgens te decoderen, kunt u deze methode aanroepen zonder tussenliggende objecten te hoeven maken.

Als de gegevens die moeten worden geconverteerd alleen beschikbaar zijn in opeenvolgende blokken (zoals gegevens die uit een stroom worden gelezen) of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet u het Decoder object gebruiken dat wordt geretourneerd door de GetDecoder methode van een afgeleide klasse.

Zie het gedeelte Opmerkingen van het Encoding.GetChars naslagonderwerp voor een bespreking van de coderingstechnieken en overwegingen.

Houd er rekening mee dat het precieze gedrag van de GetString methode voor een bepaalde Encoding implementatie afhankelijk is van de terugvalstrategie die voor dat Encoding object is gedefinieerd. Zie de sectie 'Een terugvalstrategie kiezen' van de Character-codering in .NET onderwerp voor meer informatie.

Zie ook

Van toepassing op

GetString(Byte[])

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u alle bytes in de opgegeven bytematrix in een tekenreeks.

public:
 virtual System::String ^ GetString(cli::array <System::Byte> ^ bytes);
public virtual string GetString(byte[] bytes);
abstract member GetString : byte[] -> string
override this.GetString : byte[] -> string
Public Overridable Function GetString (bytes As Byte()) As String

Parameters

bytes
Byte[]

De bytematrix met de reeks bytes die moet worden gedecodeerd.

Retouren

Een tekenreeks die de resultaten bevat van het decoderen van de opgegeven reeks bytes.

Uitzonderingen

De bytematrix bevat ongeldige Unicode-codepunten.

bytes is null.

Er is een terugval opgetreden (zie Character Encoding in .NET)

en

DecoderFallback is ingesteld op DecoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld wordt een UTF-8 gecodeerde tekenreeks gelezen uit een binair bestand dat wordt vertegenwoordigd door een FileStream object. Voor bestanden die kleiner zijn dan 2048 bytes, wordt de inhoud van het hele bestand in een bytematrix gelezen en wordt de GetString(Byte[]) methode aangeroepen om de decodering uit te voeren. Voor grotere bestanden worden 2048 bytes tegelijk in een bytematrix gelezen, wordt de Decoder.GetCharCount(Byte[], Int32, Int32) methode aangeroepen om te bepalen hoeveel tekens in de matrix zijn opgenomen en wordt de methode aangeroepen om de Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) decodering uit te voeren.

using System;
using System.IO;
using System.Text;

public class Example
{
   const int MAX_BUFFER_SIZE = 2048;
   static Encoding enc8 = Encoding.UTF8;

   public static void Main()
   {
      FileStream fStream = new FileStream(@".\Utf8Example.txt", FileMode.Open);
      string contents = null;
      
      // If file size is small, read in a single operation.
      if (fStream.Length <= MAX_BUFFER_SIZE) {
         Byte[] bytes = new Byte[fStream.Length];
         fStream.Read(bytes, 0, bytes.Length);
         contents = enc8.GetString(bytes);
      }
      // If file size exceeds buffer size, perform multiple reads.
      else {
         contents = ReadFromBuffer(fStream);
      }
      fStream.Close();
      Console.WriteLine(contents);
   }

   private static string ReadFromBuffer(FileStream fStream)
   {
        Byte[] bytes = new Byte[MAX_BUFFER_SIZE];
        string output = String.Empty;
        Decoder decoder8 = enc8.GetDecoder();
      
        while (fStream.Position < fStream.Length) {
           int nBytes = fStream.Read(bytes, 0, bytes.Length);
           int nChars = decoder8.GetCharCount(bytes, 0, nBytes);
           char[] chars = new char[nChars];
           nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0);
           output += new String(chars, 0, nChars);                                                     
        }
        return output;
    }
}
// The example displays the following output:
//     This is a UTF-8-encoded file that contains primarily Latin text, although it
//     does list the first twelve letters of the Russian (Cyrillic) alphabet:
//     
//     А б в г д е ё ж з и й к
//     
//     The goal is to save this file, then open and decode it as a binary stream.
Imports System.IO
Imports System.Text

Module Example
   Const MAX_BUFFER_SIZE As Integer = 2048
   
   Dim enc8 As Encoding = Encoding.UTF8
      
   Public Sub Main()
      Dim fStream As New FileStream(".\Utf8Example.txt", FileMode.Open)
      Dim contents As String = Nothing
      
      ' If file size is small, read in a single operation.
      If fStream.Length <= MAX_BUFFER_SIZE Then
         Dim bytes(CInt(fStream.Length) - 1) As Byte
         fStream.Read(bytes, 0, bytes.Length)
         contents = enc8.GetString(bytes)
      ' If file size exceeds buffer size, perform multiple reads.
      Else
         contents = ReadFromBuffer(fStream)
      End If
      fStream.Close()
      Console.WriteLine(contents)
   End Sub   

    Private Function ReadFromBuffer(fStream As FileStream) As String
        Dim bytes(MAX_BUFFER_SIZE) As Byte
        Dim output As String = String.Empty
        Dim decoder8 As Decoder = enc8.GetDecoder()
      
        Do While fStream.Position < fStream.Length
           Dim nBytes As Integer = fStream.Read(bytes, 0, bytes.Length)
           Dim nChars As Integer = decoder8.GetCharCount(bytes, 0, nBytes)
           Dim chars(nChars - 1) As Char
           nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0)
           output += New String(chars, 0, nChars)                                                     
        Loop
        Return output
    End Function
End Module
' The example displays the following output:
'     This is a UTF-8-encoded file that contains primarily Latin text, although it
'     does list the first twelve letters of the Russian (Cyrillic) alphabet:
'     
'     ? ? ? ? ? ? ? ? ? ? ? ?
'     
'     The goal is to save this file, then open and decode it as a binary stream.

In het voorbeeld wordt de volgende tekst gebruikt, die moet worden opgeslagen in een UTF-8-gecodeerd bestand met de naam Utf8Example.txt.

This is a UTF-8-encoded file that contains primarily Latin text, although it
does list the first twelve letters of the Russian (Cyrillic) alphabet:

А б в г д е ё ж з и й к

The goal is to save this file, then open and decode it as a binary stream.

Opmerkingen

Als de gegevens die moeten worden geconverteerd alleen beschikbaar zijn in opeenvolgende blokken (zoals gegevens die uit een stroom worden gelezen) of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet u het Decoder object gebruiken dat wordt geretourneerd door de GetDecoder methode van een afgeleide klasse.

Zie het gedeelte Opmerkingen van het Encoding.GetChars naslagonderwerp voor een bespreking van de coderingstechnieken en overwegingen.

Houd er rekening mee dat het precieze gedrag van de GetString methode voor een bepaalde Encoding implementatie afhankelijk is van de terugvalstrategie die voor dat Encoding object is gedefinieerd. Zie de sectie 'Een terugvalstrategie kiezen' van de Character-codering in .NET onderwerp voor meer informatie.

Zie ook

Van toepassing op

GetString(ReadOnlySpan<Byte>)

Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u alle bytes in de opgegeven byte span in een tekenreeks.

public:
 System::String ^ GetString(ReadOnlySpan<System::Byte> bytes);
public string GetString(ReadOnlySpan<byte> bytes);
member this.GetString : ReadOnlySpan<byte> -> string
Public Function GetString (bytes As ReadOnlySpan(Of Byte)) As String

Parameters

bytes
ReadOnlySpan<Byte>

Een bytespanne met het kenmerk Alleen-lezen om te decoderen naar een Unicode-tekenreeks.

Retouren

Een tekenreeks die de gedecodeerde bytes uit het opgegeven bereik met het kenmerk Alleen-lezen bevat.

Opmerkingen

De GetString methode is ontworpen om de prestaties te optimaliseren. In plaats van een beheerde bytematrix te maken en deze vervolgens te decoderen, kunt u deze methode aanroepen zonder tussenliggende objecten te hoeven maken.

Als de gegevens die moeten worden geconverteerd alleen beschikbaar zijn in opeenvolgende blokken (zoals gegevens die uit een stroom worden gelezen) of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet u het Decoder object gebruiken dat wordt geretourneerd door de GetDecoder methode van een afgeleide klasse.

Zie het gedeelte Opmerkingen van het Encoding.GetChars naslagonderwerp voor een bespreking van de coderingstechnieken en overwegingen.

Houd er rekening mee dat het precieze gedrag van de GetString methode voor een bepaalde Encoding implementatie afhankelijk is van de terugvalstrategie die voor dat Encoding object is gedefinieerd. Zie de sectie 'Een terugvalstrategie kiezen' van de Character-codering in .NET onderwerp voor meer informatie.

Van toepassing op