Bagikan melalui


Encoding.GetString Metode

Definisi

Saat ditimpa di kelas turunan, dekode urutan byte menjadi string.

Overload

GetString(Byte[])

Saat ditimpa di kelas turunan, dekode semua byte dalam array byte yang ditentukan menjadi string.

GetString(ReadOnlySpan<Byte>)

Saat ditimpa dalam kelas turunan, dekode semua byte dalam rentang byte yang ditentukan menjadi string.

GetString(Byte*, Int32)

Saat ditimpa di kelas turunan, mendekode sejumlah byte tertentu yang dimulai pada alamat tertentu menjadi string.

GetString(Byte[], Int32, Int32)

Saat ditimpa di kelas turunan, dekode urutan byte dari array byte yang ditentukan menjadi string.

GetString(Byte[])

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Saat ditimpa di kelas turunan, dekode semua byte dalam array byte yang ditentukan menjadi 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

Parameter

bytes
Byte[]

Array byte yang berisi urutan byte yang akan didekodekan.

Mengembalikan

String yang berisi hasil pendekodean urutan byte yang ditentukan.

Pengecualian

Array byte berisi titik kode Unicode yang tidak valid.

bytesadalah null.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Contoh

Contoh berikut membaca string yang dikodekan UTF-8 dari file biner yang FileStream diwakili oleh objek. Untuk file yang lebih kecil dari 2.048 byte, file membaca konten seluruh file ke dalam array byte dan memanggil GetString(Byte[]) metode untuk melakukan pendekodean. Untuk file yang lebih besar, ia membaca 2.048 byte pada satu waktu ke dalam array byte, memanggil Decoder.GetCharCount(Byte[], Int32, Int32) metode untuk menentukan berapa banyak karakter yang terkandung dalam array, lalu memanggil Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metode untuk melakukan pendekodean.

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.

Contohnya menggunakan teks berikut, yang harus disimpan ke file yang dikodekan UTF-8 bernama 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.

Keterangan

Jika data yang akan dikonversi hanya tersedia dalam blok berurutan (seperti data yang dibaca dari aliran) atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, Anda harus menggunakan Decoder objek yang dikembalikan oleh GetDecoder metode kelas turunan.

Lihat bagian Keterangan dari Encoding.GetChars topik referensi untuk diskusi teknik dan pertimbangan pendekodean.

Perhatikan bahwa perilaku yang tepat dari GetString metode untuk implementasi tertentu Encoding tergantung pada strategi fallback yang Encoding ditentukan untuk objek tersebut. Untuk informasi selengkapnya, lihat bagian "Memilih Strategi Fallback" dari Pengodean Karakter dalam topik .NET .

Lihat juga

Berlaku untuk

GetString(ReadOnlySpan<Byte>)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Saat ditimpa dalam kelas turunan, dekode semua byte dalam rentang byte yang ditentukan menjadi string.

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

Parameter

bytes
ReadOnlySpan<Byte>

Rentang byte baca-saja untuk mendekode ke string Unicode.

Mengembalikan

String yang berisi byte yang didekodekan dari rentang baca-saja yang disediakan.

Keterangan

Metode GetString ini dirancang untuk mengoptimalkan performa. Alih-alih membuat array byte terkelola dan kemudian mendekodenya, Anda dapat memanggil metode ini tanpa harus membuat objek perantara.

Jika data yang akan dikonversi hanya tersedia dalam blok berurutan (seperti data yang dibaca dari aliran) atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, Anda harus menggunakan Decoder objek yang dikembalikan oleh GetDecoder metode kelas turunan.

Lihat bagian Keterangan dari Encoding.GetChars topik referensi untuk diskusi teknik dan pertimbangan pendekodean.

Perhatikan bahwa perilaku yang tepat dari GetString metode untuk implementasi tertentu Encoding tergantung pada strategi fallback yang Encoding ditentukan untuk objek tersebut. Untuk informasi selengkapnya, lihat bagian "Memilih Strategi Fallback" dari Pengodean Karakter dalam topik .NET .

Berlaku untuk

GetString(Byte*, Int32)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Penting

API ini bukan kompatibel CLS.

Saat ditimpa di kelas turunan, mendekode sejumlah byte tertentu yang dimulai pada alamat tertentu menjadi string.

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

Parameter

bytes
Byte*

Penunjuk ke array byte.

byteCount
Int32

Jumlah byte yang akan didekodekan.

Mengembalikan

String yang berisi hasil pendekodean urutan byte yang ditentukan.

Atribut

Pengecualian

bytes adalah penunjuk null.

byteCount kurang dari nol.

Fallback terjadi (lihat Pengodean Karakter di .NET) untuk penjelasan lengkap)

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Keterangan

Metode GetString ini dirancang untuk mengoptimalkan performa saat Anda memiliki penunjuk asli ke array byte. Alih-alih membuat array byte terkelola dan kemudian mendekodenya, Anda dapat memanggil metode ini tanpa harus membuat objek perantara.

Jika data yang akan dikonversi hanya tersedia dalam blok berurutan (seperti data yang dibaca dari aliran) atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, Anda harus menggunakan Decoder objek yang dikembalikan oleh GetDecoder metode kelas turunan.

Lihat bagian Keterangan dari Encoding.GetChars topik referensi untuk diskusi teknik dan pertimbangan pendekodean.

Perhatikan bahwa perilaku yang tepat dari GetString metode untuk implementasi tertentu Encoding tergantung pada strategi fallback yang Encoding ditentukan untuk objek tersebut. Untuk informasi selengkapnya, lihat bagian "Memilih Strategi Fallback" dari Pengodean Karakter dalam topik .NET .

Lihat juga

Berlaku untuk

GetString(Byte[], Int32, Int32)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Saat ditimpa di kelas turunan, dekode urutan byte dari array byte yang ditentukan menjadi 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

Parameter

bytes
Byte[]

Array byte yang berisi urutan byte yang akan didekodekan.

index
Int32

Indeks byte pertama yang didekodekan.

count
Int32

Jumlah byte yang akan didekodekan.

Mengembalikan

String yang berisi hasil pendekodean urutan byte yang ditentukan.

Pengecualian

Array byte berisi titik kode Unicode yang tidak valid.

bytesadalah null.

index atau count kurang dari nol.

-atau-

index dan count jangan menandakan rentang yang valid di bytes.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Contoh

Contoh berikut membaca string yang dikodekan UTF-8 dari file biner yang diwakili oleh FileStream objek. Untuk file yang lebih kecil dari 2.048 byte, file membaca konten seluruh file ke dalam array byte dan memanggil GetString(Byte[], Int32, Int32) metode untuk melakukan pendekodean. Untuk file yang lebih besar, ia membaca 2.048 byte pada satu waktu ke dalam array byte, memanggil Decoder.GetCharCount(Byte[], Int32, Int32) metode untuk menentukan berapa banyak karakter yang terkandung dalam array, lalu memanggil Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metode untuk melakukan pendekodean.

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.

Contohnya menggunakan teks berikut, yang harus disimpan ke file yang dikodekan UTF-8 bernama 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.

Keterangan

Jika data yang akan dikonversi hanya tersedia dalam blok berurutan (seperti data yang dibaca dari aliran) atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, Anda harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode, masing-masing, dari kelas turunan.

Lihat bagian Keterangan dari Encoding.GetChars topik referensi untuk diskusi teknik dan pertimbangan pendekodean.

Lihat juga

Berlaku untuk