Encoding.GetString Metoda

Definice

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů do řetězce.When overridden in a derived class, decodes a sequence of bytes into a string.

Přetížení

GetString(Byte[])

Při přepsání v odvozené třídě Dekóduje všechny bajty v zadaném bajtovém poli do řetězce.When overridden in a derived class, decodes all the bytes in the specified byte array into a string.

GetString(ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě Dekóduje všechny bajty v zadaném bajtovém rozsahu do řetězce.When overridden in a derived class, decodes all the bytes in the specified byte span into a string.

GetString(Byte*, Int32)

Při přepsání v odvozené třídě Dekóduje zadaný počet bajtů počínaje zadanou adresou do řetězce.When overridden in a derived class, decodes a specified number of bytes starting at a specified address into a string.

GetString(Byte[], Int32, Int32)

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů ze zadaného bajtového pole do řetězce.When overridden in a derived class, decodes a sequence of bytes from the specified byte array into a string.

GetString(Byte[])

Při přepsání v odvozené třídě Dekóduje všechny bajty v zadaném bajtovém poli do řetězce.When overridden in a derived class, decodes all the bytes in the specified byte array into a string.

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

Parametry

bytes
Byte[]

Pole bajtů obsahující sekvenci bajtů k dekódování.The byte array containing the sequence of bytes to decode.

Návraty

String

Řetězec, který obsahuje výsledky dekódování zadaného pořadí bajtů.A string that contains the results of decoding the specified sequence of bytes.

Výjimky

Pole bajtů obsahuje neplatné body kódu Unicode.The byte array contains invalid Unicode code points.

bytes je null.bytes is null.

Došlo k chybě Fallback (Další informace najdete v tématu kódování znaků v rozhraní .NET).A fallback occurred (for more information, see Character Encoding in .NET)

ani-and-

DecoderFallback je nastaven na DecoderExceptionFallback .DecoderFallback is set to DecoderExceptionFallback.

Příklady

Následující příklad přečte řetězec kódovaný v kódování UTF-8 z binárního souboru reprezentovaného FileStream objektem.The following example reads a UTF-8 encoded string from a binary file represented by a FileStream object. Pro soubory, které jsou menší než 2 048 bajtů, přečte obsah celého souboru do pole bajtů a zavolá GetString(Byte[]) metodu pro provedení dekódování.For files that are smaller than 2,048 bytes, it reads the contents of the entire file into a byte array and calls the GetString(Byte[]) method to perform the decoding. U větších souborů čte 2 048 bajtů v čase do bajtového pole, volá Decoder.GetCharCount(Byte[], Int32, Int32) metodu pro určení, kolik znaků je obsaženo v poli, a poté volá Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodu pro provedení dekódování.For larger files, it reads 2,048 bytes at a time into a byte array, calls the Decoder.GetCharCount(Byte[], Int32, Int32) method to determine how many characters are contained in the array, and then calls the Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) method to perform the decoding.

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.

V příkladu se používá následující text, který by měl být uložen do souboru kódovaného v kódování UTF-8 s názvem Utf8Example.txt.The example uses the following text, which should be saved to a UTF-8 encoded file named 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.

Poznámky

Pokud jsou data, která mají být převedena, dostupná pouze v sekvenčních blocích (například data načtená z datového proudu) nebo pokud je množství dat tak velké, aby je bylo nutné rozdělit do menších bloků, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Encoding.GetCharsDiskuzi o technikách dekódování a důležitých tématech najdete v části s poznámkami v referenčním tématu.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro daný Encoding objekt.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Další informace najdete v části Volba záložní strategie v tématu kódování znaků v rozhraní .NET .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

Viz také

Platí pro

Produkt Představení

GetString(ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě Dekóduje všechny bajty v zadaném bajtovém rozsahu do řetězce.When overridden in a derived class, decodes all the bytes in the specified byte span into a string.

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

Parametry

bytes
ReadOnlySpan<Byte>

Rozsah bajtů jen pro čtení, který se má dekódovat na řetězec Unicode.A read-only byte span to decode to a Unicode string.

Návraty

String

Řetězec obsahující Dekódovatelné bajty z poskytnutého rozpětí určeného jen pro čtení.A string that contains the decoded bytes from the provided read-only span.

Poznámky

GetStringMetoda je navržena pro optimalizaci výkonu.The GetString method is designed to optimize performance. Místo vytvoření spravovaného bajtového pole a jeho dekódování můžete místo toho volat tuto metodu, aniž byste museli vytvářet žádné mezilehlé objekty.Instead of creating a managed byte array and then decoding it, you can instead call this method without having to create any intermediate objects.

Pokud jsou data, která mají být převedena, dostupná pouze v sekvenčních blocích (například data načtená z datového proudu) nebo pokud je množství dat tak velké, aby je bylo nutné rozdělit do menších bloků, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Encoding.GetCharsDiskuzi o technikách dekódování a důležitých tématech najdete v části s poznámkami v referenčním tématu.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro daný Encoding objekt.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Další informace najdete v části Volba záložní strategie v tématu kódování znaků v rozhraní .NET .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

Platí pro

Produkt Představení

GetString(Byte*, Int32)

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

Při přepsání v odvozené třídě Dekóduje zadaný počet bajtů počínaje zadanou adresou do řetězce.When overridden in a derived class, decodes a specified number of bytes starting at a specified address into a string.

public:
 System::String ^ GetString(System::Byte* bytes, int byteCount);
public string GetString (byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public string? GetString (byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public string GetString (byte* bytes, int byteCount);
[System.CLSCompliant(false)]
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);
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
member this.GetString : nativeptr<byte> * int -> string
[<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

Parametry

bytes
Byte*

Ukazatel na pole bajtů.A pointer to a byte array.

byteCount
Int32

Počet bajtů, které se mají dekódovat.The number of bytes to decode.

Návraty

String

Řetězec, který obsahuje výsledky dekódování zadaného pořadí bajtů.A string that contains the results of decoding the specified sequence of bytes.

Atributy

Výjimky

bytes je ukazatel s hodnotou null.bytes is a null pointer.

Hodnota byteCount je menší než nula.byteCount is less than zero.

Došlo k Fallback (viz kódování znaků v rozhraní .NET) pro úplné vysvětlení.)A fallback occurred (see Character Encoding in .NET) for a complete explanation)

ani-and-

DecoderFallback je nastaven na DecoderExceptionFallback .DecoderFallback is set to DecoderExceptionFallback.

Poznámky

GetStringMetoda je navržena pro optimalizaci výkonu, pokud máte nativní ukazatel na pole bajtů.The GetString method is designed to optimize performance when you have a native pointer to a byte array. Místo vytvoření spravovaného bajtového pole a jeho dekódování můžete místo toho volat tuto metodu, aniž byste museli vytvářet žádné mezilehlé objekty.Instead of creating a managed byte array and then decoding it, you can instead call this method without having to create any intermediate objects.

Pokud jsou data, která mají být převedena, dostupná pouze v sekvenčních blocích (například data načtená z datového proudu) nebo pokud je množství dat tak velké, aby je bylo nutné rozdělit do menších bloků, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Encoding.GetCharsDiskuzi o technikách dekódování a důležitých tématech najdete v části s poznámkami v referenčním tématu.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro daný Encoding objekt.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Další informace najdete v části Volba záložní strategie v tématu kódování znaků v rozhraní .NET .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

Viz také

Platí pro

Produkt Představení

GetString(Byte[], Int32, Int32)

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů ze zadaného bajtového pole do řetězce.When overridden in a derived class, decodes a sequence of bytes from the specified byte array into a string.

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

Parametry

bytes
Byte[]

Pole bajtů obsahující sekvenci bajtů k dekódování.The byte array containing the sequence of bytes to decode.

index
Int32

Index prvního bajtu, který se má dekódovatThe index of the first byte to decode.

count
Int32

Počet bajtů, které se mají dekódovat.The number of bytes to decode.

Návraty

String

Řetězec, který obsahuje výsledky dekódování zadaného pořadí bajtů.A string that contains the results of decoding the specified sequence of bytes.

Výjimky

Pole bajtů obsahuje neplatné body kódu Unicode.The byte array contains invalid Unicode code points.

bytes je null.bytes is null.

index nebo count je menší než nula.index or count is less than zero.

-nebo--or-

index a count neměňte si platný rozsah v bytes .index and count do not denote a valid range in bytes.

Došlo k chybě Fallback (Další informace najdete v tématu kódování znaků v rozhraní .NET).A fallback occurred (for more information, see Character Encoding in .NET)

ani-and-

DecoderFallback je nastaven na DecoderExceptionFallback .DecoderFallback is set to DecoderExceptionFallback.

Příklady

Následující příklad přečte řetězec kódovaný v kódování UTF-8 z binárního souboru, který je reprezentován FileStream objektem.The following example reads a UTF-8 encoded string from a binary file that is represented by a FileStream object. Pro soubory, které jsou menší než 2 048 bajtů, přečte obsah celého souboru do pole bajtů a zavolá GetString(Byte[], Int32, Int32) metodu pro provedení dekódování.For files that are smaller than 2,048 bytes, it reads the contents of the entire file into a byte array and calls the GetString(Byte[], Int32, Int32) method to perform the decoding. U větších souborů čte 2 048 bajtů v čase do bajtového pole, volá Decoder.GetCharCount(Byte[], Int32, Int32) metodu pro určení, kolik znaků je obsaženo v poli, a poté volá Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodu pro provedení dekódování.For larger files, it reads 2,048 bytes at a time into a byte array, calls the Decoder.GetCharCount(Byte[], Int32, Int32) method to determine how many characters are contained in the array, and then calls the Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) method to perform the decoding.

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.

V příkladu se používá následující text, který by měl být uložen do souboru kódovaného v kódování UTF-8 s názvem Utf8Example.txt.The example uses the following text, which should be saved to a UTF-8 encoded file named 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.

Poznámky

Pokud jsou data k převodu k dispozici pouze v sekvenčních blocích (například data načtená z datového proudu) nebo pokud je množství dat tak velké, aby je bylo nutné rozdělit do menších bloků, měli byste použít Decoder nebo Encoder poskytnutou GetDecoder metodou nebo GetEncoder metodou (v uvedeném pořadí) odvozené třídy.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively, of a derived class.

Encoding.GetCharsDiskuzi o technikách dekódování a důležitých tématech najdete v části s poznámkami v referenčním tématu.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Viz také

Platí pro

Produkt Představení