Encoding.GetString Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
bytes
adalah 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.
bytes
adalah 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.