共用方式為


Encoding.GetString 方法

定義

在衍生類別中覆寫時,將位元組序列解碼成字串。

多載

GetString(Byte[])

在衍生類別中覆寫時,將指定位元組陣列中的所有位元組解碼成字串。

GetString(ReadOnlySpan<Byte>)

在衍生類別中覆寫時,將指定位元組範圍中的所有位元組解碼成字串。

GetString(Byte*, Int32)

在衍生類別中覆寫時,將指定位址開頭之指定數目的位元組解碼為字串。

GetString(Byte[], Int32, Int32)

在衍生類別中覆寫時,將指定位元組陣列中的位元組序列解碼成字串。

GetString(Byte[])

來源:
Encoding.cs
來源:
Encoding.cs
來源:
Encoding.cs

在衍生類別中覆寫時,將指定位元組陣列中的所有位元組解碼成字串。

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[]

包含要解碼之位元組序列的位元組陣列。

傳回

字串,包含將指定之位元組序列解碼的結果。

例外狀況

位元組陣列包含無效的 Unicode 字碼指標。

bytesnull

發生後援 (如需詳細資訊,請參閱 .NET 中的字元編碼)

-和-

DecoderFallback 設定為 DecoderExceptionFallback

範例

下列範例會從物件所 FileStream 代表的二進位檔讀取UTF-8編碼字串。 對於小於 2,048 個字節的檔案,它會將整個檔案的內容讀入位元組陣列,並呼叫 GetString(Byte[]) 方法來執行譯碼。 對於較大的檔案,它會一次將 2,048 個字節讀入位元組數位、呼叫 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.

此範例會使用下列文字,這應該儲存至名為 Utf8Example.txt 的 UTF-8 編碼檔案。

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物件定義的後援策略。 如需詳細資訊,請參閱 .NET 中字元編碼主題的 一節。

另請參閱

適用於

GetString(ReadOnlySpan<Byte>)

來源:
Encoding.cs
來源:
Encoding.cs
來源:
Encoding.cs

在衍生類別中覆寫時,將指定位元組範圍中的所有位元組解碼成字串。

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>

要解碼成 Unicode 字串的唯讀位元組範圍。

傳回

字串,其包含從所提供唯讀範圍解碼的位元組。

備註

方法 GetString 的設計目的是要優化效能。 您可以改為呼叫這個方法,而不需要建立任何中繼物件,而不是建立 Managed 位元組陣列,然後譯碼它。

如果要轉換的數據只能在循序區塊中使用, (例如從數據流讀取的數據) ,或是數據量太大而需要分割成較小的區塊,您應該使用 Decoder 衍生類別的 方法所 GetDecoder 傳回的物件。

如需譯碼技術和考慮的討論,請參閱參考主題的 Encoding.GetChars 一節。

請注意,特定Encoding實作之 方法的GetString精確行為取決於針對該Encoding物件定義的後援策略。 如需詳細資訊,請參閱 .NET 中字元編碼主題的 一節。

適用於

GetString(Byte*, Int32)

來源:
Encoding.cs
來源:
Encoding.cs
來源:
Encoding.cs

重要

此 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)]
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)>]
[<System.Security.SecurityCritical>]
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
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

參數

bytes
Byte*

位元組陣列的指標。

byteCount
Int32

要解碼的位元組數。

傳回

字串,包含將指定之位元組序列解碼的結果。

屬性

例外狀況

bytes 為 null 指標。

byteCount 小於零。

發生後援 (請參閱 .NET) 中的字元編碼 ,以取得完整的說明)

-和-

DecoderFallback 設定為 DecoderExceptionFallback

備註

當您有位元組陣列的原生指標時,方法 GetString 的設計目的是要優化效能。 您可以改為呼叫這個方法,而不需要建立任何中繼物件,而不是建立 Managed 位元組陣列,然後譯碼它。

如果要轉換的數據只能在循序區塊中使用, (例如從數據流讀取的數據) ,或是數據量太大而需要分割成較小的區塊,您應該使用 Decoder 衍生類別的 方法所 GetDecoder 傳回的物件。

如需譯碼技術和考慮的討論,請參閱參考主題的 Encoding.GetChars 一節。

請注意,特定Encoding實作之 方法的GetString精確行為取決於針對該Encoding物件定義的後援策略。 如需詳細資訊,請參閱 .NET 中字元編碼主題的 一節。

另請參閱

適用於

GetString(Byte[], Int32, Int32)

來源:
Encoding.cs
來源:
Encoding.cs
來源:
Encoding.cs

在衍生類別中覆寫時,將指定位元組陣列中的位元組序列解碼成字串。

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

要解碼的位元組數。

傳回

字串,包含將指定之位元組序列解碼的結果。

例外狀況

位元組陣列包含無效的 Unicode 字碼指標。

bytesnull

indexcount 小於零。

-或-

indexcount 不代表 bytes 中有效的範圍。

發生後援 (如需詳細資訊,請參閱 .NET 中的字元編碼)

-和-

DecoderFallback 設定為 DecoderExceptionFallback

範例

下列範例會從 由物件表示 FileStream 的二進位檔讀取UTF-8編碼字串。 對於小於 2,048 個字節的檔案,它會將整個檔案的內容讀入位元組陣列,並呼叫 GetString(Byte[], Int32, Int32) 方法來執行譯碼。 對於較大的檔案,它會一次將 2,048 個字節讀入位元組數位、呼叫 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.

此範例會使用下列文字,這應該儲存至名為 Utf8Example.txt 的 UTF-8 編碼檔案。

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.

備註

如果要轉換的數據只能在循序區塊中使用, (例如從數據流讀取的數據) ,或如果數據量太大而需要分割成較小的區塊,您應該分別使用 DecoderEncoder 方法或 方法所提供的 GetDecoderGetEncoder 方法。

如需譯碼技術和考慮的討論,請參閱參考主題的 Encoding.GetChars 一節。

另請參閱

適用於