Encoding.GetString Metod

Definition

När du åsidosättas i en härledd klass avkodar du en sekvens med byte till en sträng.

Överlagringar

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

När den åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen till en sträng.

GetString(Byte*, Int32)

När det åsidosättas i en härledd klass avkodas ett angivet antal byte som börjar vid en angiven adress till en sträng.

GetString(Byte[])

När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en sträng.

GetString(ReadOnlySpan<Byte>)

När de åsidosättas i en härledd klass avkodas alla byte i det angivna byteintervallet till en sträng.

GetString(Byte[], Int32, Int32)

När den åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen till en sträng.

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

Parametrar

bytes
Byte[]

Bytematrisen som innehåller sekvensen med byte som ska avkodas.

index
Int32

Indexet för den första byte som ska avkodas.

count
Int32

Antalet byte som ska avkodas.

Returer

En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.

Undantag

Byte-matrisen innehåller ogiltiga Unicode-kodpunkter.

bytes är null.

index eller count är mindre än noll.

-eller-

index och count ange inte ett giltigt intervall i bytes.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

DecoderFallback är inställt på DecoderExceptionFallback.

Exempel

I följande exempel läss en UTF-8-kodad sträng från en binär fil som representeras av ett FileStream objekt. För filer som är mindre än 2 048 byte läser den innehållet i hela filen i en bytematris och anropar GetString(Byte[], Int32, Int32) metoden för att utföra avkodningen. För större filer läser den 2 048 byte åt gången i en bytematris, anropar Decoder.GetCharCount(Byte[], Int32, Int32) metoden för att fastställa hur många tecken som finns i matrisen och anropar Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) sedan metoden för att utföra avkodningen.

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.

I exemplet används följande text, som ska sparas i en UTF-8-kodad fil med namnet 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.

Kommentarer

Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läses från en dataström) eller, om mängden data är så stor att den måste delas upp i mindre block, bör du använda Decoder eller Encoder som tillhandahålls av metoden GetDecoder eller GetEncoder för en härledd klass.

Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.

Se även

Gäller för

GetString(Byte*, Int32)

Viktigt!

Detta API uppfyller inte CLS.

När det åsidosättas i en härledd klass avkodas ett angivet antal byte som börjar vid en angiven adress till en sträng.

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

Parametrar

bytes
Byte*

En pekare till en bytematris.

byteCount
Int32

Antalet byte som ska avkodas.

Returer

En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.

Attribut

Undantag

bytes är en null-pekare.

byteCount är mindre än noll.

En återställning inträffade (se Character Encoding i .NET för en fullständig förklaring)

-och-

DecoderFallback är inställt på DecoderExceptionFallback.

Kommentarer

Metoden GetString är utformad för att optimera prestanda när du har en inbyggd pekare till en bytematris. I stället för att skapa en hanterad bytematris och sedan avkoda den kan du anropa den här metoden utan att behöva skapa några mellanliggande objekt.

Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.

Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.

Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.

Se även

Gäller för

GetString(Byte[])

När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en sträng.

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

Parametrar

bytes
Byte[]

Bytematrisen som innehåller sekvensen med byte som ska avkodas.

Returer

En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.

Undantag

Byte-matrisen innehåller ogiltiga Unicode-kodpunkter.

bytes är null.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

DecoderFallback är inställt på DecoderExceptionFallback.

Exempel

I följande exempel läss en UTF-8-kodad sträng från en binär fil som representeras av ett FileStream objekt. För filer som är mindre än 2 048 byte läser den innehållet i hela filen i en bytematris och anropar GetString(Byte[]) metoden för att utföra avkodningen. För större filer läser den 2 048 byte åt gången i en bytematris, anropar Decoder.GetCharCount(Byte[], Int32, Int32) metoden för att fastställa hur många tecken som finns i matrisen och anropar Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) sedan metoden för att utföra avkodningen.

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.

I exemplet används följande text, som ska sparas i en UTF-8-kodad fil med namnet 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.

Kommentarer

Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.

Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.

Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.

Se även

Gäller för

GetString(ReadOnlySpan<Byte>)

När de åsidosättas i en härledd klass avkodas alla byte i det angivna byteintervallet till en sträng.

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

Parametrar

bytes
ReadOnlySpan<Byte>

Ett skrivskyddat byteintervall för att avkoda till en Unicode-sträng.

Returer

En sträng som innehåller de avkodade byteen från det angivna skrivskyddade intervallet.

Kommentarer

Metoden GetString är utformad för att optimera prestanda. I stället för att skapa en hanterad bytematris och sedan avkoda den kan du anropa den här metoden utan att behöva skapa några mellanliggande objekt.

Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.

Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.

Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.

Gäller för