Encoding.GetString Метод

Определение

При переопределении в производном классе декодирует последовательность байтов в строку.

Перегрузки

Имя Описание
GetString(Byte[], Int32, Int32)

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов в строку.

GetString(Byte*, Int32)

При переопределении в производном классе декодирует указанное число байтов, начиная с указанного адреса в строку.

GetString(Byte[])

При переопределении в производном классе декодирует все байты в указанном массиве байтов в строку.

GetString(ReadOnlySpan<Byte>)

При переопределении в производном классе декодирует все байты в указанном диапазоне байтов в строку.

GetString(Byte[], Int32, Int32)

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов в строку.

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

Параметры

bytes
Byte[]

Массив байтов, содержащий последовательность байтов для декодирования.

index
Int32

Индекс первого байта для декодирования.

count
Int32

Количество байтов, которые необходимо декодировать.

Возвращаемое значение

Строка, содержащая результаты декодирования указанной последовательности байтов.

Исключения

Массив байтов содержит недопустимые кодовые точки Юникода.

bytes равно null.

index или count меньше нуля.

–или–

index и count не обозначайте допустимый диапазон в bytes.

Произошла резервная ошибка (дополнительные сведения см. в разделе "Кодировка символов" в .NET)

-и-

DecoderFallback задан как DecoderExceptionFallback.

Примеры

В следующем примере считывается строка в кодировке UTF-8 из двоичного файла, представленного FileStream объектом. Для файлов, которые меньше 2048 байт, он считывает содержимое всего файла в массив байтов и вызывает GetString(Byte[], Int32, Int32) метод для декодирования. Для больших файлов он считывает 2048 байт за раз в массив байтов, вызывает Decoder.GetCharCount(Byte[], Int32, Int32) метод, чтобы определить, сколько символов содержатся в массиве, а затем вызывает Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) метод для декодирования.

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.

В примере используется следующий текст, который должен быть сохранен в файле в кодировке UTF-8 с именем 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.

Комментарии

Если преобразованные данные доступны только в последовательных блоках (например, данные считываются из потока) или если объем данных настолько велик, что его необходимо разделить на меньшие блоки, следует использовать Decoder или Encoder, предоставляемые методом GetDecoder или методом GetEncoder соответственно, производного класса.

См. раздел "Примечания" Encoding.GetChars в справочном разделе для обсуждения методов декодирования и рекомендаций.

См. также раздел

Применяется к

GetString(Byte*, Int32)

Внимание

Этот API несовместим с CLS.

При переопределении в производном классе декодирует указанное число байтов, начиная с указанного адреса в строку.

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

Параметры

bytes
Byte*

Указатель на массив байтов.

byteCount
Int32

Количество байтов, которые необходимо декодировать.

Возвращаемое значение

Строка, содержащая результаты декодирования указанной последовательности байтов.

Атрибуты

Исключения

bytes — это указатель null.

byteCount меньше нуля.

Произошла резервная ошибка (см. КодировкаCharacter в .NET для полного объяснения).

-и-

DecoderFallback задан как DecoderExceptionFallback.

Комментарии

Метод GetString предназначен для оптимизации производительности при наличии собственного указателя на массив байтов. Вместо создания управляемого массива байтов, а затем декодирования его можно вызвать этот метод, не создавая промежуточные объекты.

Если преобразованные данные доступны только в последовательных блоках (например, данные считываются из потока) или если объем данных настолько велик, что его необходимо разделить на меньшие блоки, следует использовать Decoder объект, возвращаемый GetDecoder методом производного класса.

См. раздел "Примечания" Encoding.GetChars в справочном разделе для обсуждения методов декодирования и рекомендаций.

Обратите внимание, что точное поведение метода для конкретной Encoding реализации зависит от резервной GetString стратегии, определенной для этого Encoding объекта. Дополнительные сведения см. в разделе "Выбор резервной стратегии" раздела "Кодировка Character в разделе .NET.

См. также раздел

Применяется к

GetString(Byte[])

При переопределении в производном классе декодирует все байты в указанном массиве байтов в строку.

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

Параметры

bytes
Byte[]

Массив байтов, содержащий последовательность байтов для декодирования.

Возвращаемое значение

Строка, содержащая результаты декодирования указанной последовательности байтов.

Исключения

Массив байтов содержит недопустимые кодовые точки Юникода.

bytes равно null.

Произошла резервная ошибка (дополнительные сведения см. в разделе "Кодировка символов" в .NET)

-и-

DecoderFallback задан как DecoderExceptionFallback.

Примеры

В следующем примере считывается строка в кодировке UTF-8 из двоичного файла, представленного FileStream объектом. Для файлов, которые меньше 2048 байт, он считывает содержимое всего файла в массив байтов и вызывает GetString(Byte[]) метод для декодирования. Для больших файлов он считывает 2048 байт за раз в массив байтов, вызывает Decoder.GetCharCount(Byte[], Int32, Int32) метод, чтобы определить, сколько символов содержатся в массиве, а затем вызывает Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) метод для декодирования.

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.

В примере используется следующий текст, который должен быть сохранен в файле в кодировке UTF-8 с именем 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.

Комментарии

Если преобразованные данные доступны только в последовательных блоках (например, данные считываются из потока) или если объем данных настолько велик, что его необходимо разделить на меньшие блоки, следует использовать Decoder объект, возвращаемый GetDecoder методом производного класса.

См. раздел "Примечания" Encoding.GetChars в справочном разделе для обсуждения методов декодирования и рекомендаций.

Обратите внимание, что точное поведение метода для конкретной Encoding реализации зависит от резервной GetString стратегии, определенной для этого Encoding объекта. Дополнительные сведения см. в разделе "Выбор резервной стратегии" раздела "Кодировка Character в разделе .NET.

См. также раздел

Применяется к

GetString(ReadOnlySpan<Byte>)

При переопределении в производном классе декодирует все байты в указанном диапазоне байтов в строку.

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

Параметры

bytes
ReadOnlySpan<Byte>

Диапазон байтов только для чтения для декодировки в строку Юникода.

Возвращаемое значение

Строка, содержащая декодированные байты из предоставленного диапазона только для чтения.

Комментарии

Метод GetString предназначен для оптимизации производительности. Вместо создания управляемого массива байтов, а затем декодирования его можно вызвать этот метод, не создавая промежуточные объекты.

Если преобразованные данные доступны только в последовательных блоках (например, данные считываются из потока) или если объем данных настолько велик, что его необходимо разделить на меньшие блоки, следует использовать Decoder объект, возвращаемый GetDecoder методом производного класса.

См. раздел "Примечания" Encoding.GetChars в справочном разделе для обсуждения методов декодирования и рекомендаций.

Обратите внимание, что точное поведение метода для конкретной Encoding реализации зависит от резервной GetString стратегии, определенной для этого Encoding объекта. Дополнительные сведения см. в разделе "Выбор резервной стратегии" раздела "Кодировка Character в разделе .NET.

Применяется к