Encoding.GetString Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów do ciągu.
Przeciążenia
GetString(Byte[]) |
Po przesłonięciu w klasie pochodnej wszystkie bajty w określonej tablicy bajtów są dekodowane w ciągu. |
GetString(ReadOnlySpan<Byte>) |
Po przesłonięcia w klasie pochodnej dekoduje wszystkie bajty w określonym przedziale bajtów na ciąg. |
GetString(Byte*, Int32) |
Po zastąpieniu w klasie pochodnej dekoduje określoną liczbę bajtów rozpoczynających się od określonego adresu do ciągu. |
GetString(Byte[], Int32, Int32) |
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów do ciągu. |
GetString(Byte[])
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
Po przesłonięciu w klasie pochodnej wszystkie bajty w określonej tablicy bajtów są dekodowane w ciągu.
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
Parametry
- bytes
- Byte[]
Tablica bajtów zawierająca sekwencję bajtów do dekodowania.
Zwraca
Ciąg zawierający wyniki dekodowania określonej sekwencji bajtów.
Wyjątki
Tablica bajtów zawiera nieprawidłowe punkty kodu Unicode.
bytes
to null
.
Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
DecoderFallback parametr jest ustawiony na DecoderExceptionFallbackwartość .
Przykłady
Poniższy przykład odczytuje ciąg zakodowany w formacie UTF-8 z pliku binarnego reprezentowanego FileStream przez obiekt. W przypadku plików, które są mniejsze niż 2048 bajtów, odczytuje zawartość całego pliku do tablicy bajtów i wywołuje GetString(Byte[]) metodę w celu przeprowadzenia dekodowania. W przypadku większych plików odczytuje 2048 bajtów jednocześnie do tablicy bajtów, wywołuje Decoder.GetCharCount(Byte[], Int32, Int32) metodę w celu określenia, ile znaków znajduje się w tablicy, a następnie wywołuje Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodę w celu przeprowadzenia dekodowania.
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.
W przykładzie użyto następującego tekstu, który powinien zostać zapisany w zakodowanym pliku UTF-8 o nazwie 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.
Uwagi
Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że należy podzielić je na mniejsze bloki, należy użyć Decoder obiektu zwróconego przez GetDecoder metodę klasy pochodnej.
Zapoznaj się z sekcją Uwagi w Encoding.GetChars temacie referencyjnym, aby zapoznać się z omówieniem technik dekodowania i zagadnień.
Należy pamiętać, że dokładne zachowanie GetString metody dla określonej Encoding implementacji zależy od strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET .
Zobacz też
Dotyczy
GetString(ReadOnlySpan<Byte>)
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
Po przesłonięcia w klasie pochodnej dekoduje wszystkie bajty w określonym przedziale bajtów na ciąg.
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
Parametry
- bytes
- ReadOnlySpan<Byte>
Zakres bajtów tylko do odczytu, aby zdekodować ciąg Unicode.
Zwraca
Ciąg zawierający zdekodowane bajty z podanego zakresu tylko do odczytu.
Uwagi
Metoda została zaprojektowana GetString w celu zoptymalizowania wydajności. Zamiast tworzyć zarządzaną tablicę bajtów, a następnie dekodować ją, można zamiast tego wywołać tę metodę bez konieczności tworzenia jakichkolwiek obiektów pośrednich.
Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że należy podzielić je na mniejsze bloki, należy użyć Decoder obiektu zwróconego przez GetDecoder metodę klasy pochodnej.
Zapoznaj się z sekcją Uwagi w Encoding.GetChars temacie referencyjnym, aby zapoznać się z omówieniem technik dekodowania i zagadnień.
Należy pamiętać, że dokładne zachowanie GetString metody dla określonej Encoding implementacji zależy od strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET .
Dotyczy
GetString(Byte*, Int32)
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Po zastąpieniu w klasie pochodnej dekoduje określoną liczbę bajtów rozpoczynających się od określonego adresu do ciągu.
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
Parametry
- bytes
- Byte*
Wskaźnik do tablicy bajtów.
- byteCount
- Int32
Liczba bajtów do dekodowania.
Zwraca
Ciąg zawierający wyniki dekodowania określonej sekwencji bajtów.
- Atrybuty
Wyjątki
bytes
jest wskaźnikiem o wartości null.
Parametr byteCount
ma wartość niższą niż zero.
Wystąpił powrót (zobacz Kodowanie znaków na platformie .NET), aby uzyskać pełne wyjaśnienie)
-I-
DecoderFallback parametr jest ustawiony na DecoderExceptionFallbackwartość .
Uwagi
Metoda została zaprojektowana GetString w celu optymalizacji wydajności w przypadku natywnego wskaźnika do tablicy bajtów. Zamiast tworzyć zarządzaną tablicę bajtów, a następnie dekodować ją, można zamiast tego wywołać tę metodę bez konieczności tworzenia jakichkolwiek obiektów pośrednich.
Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że należy podzielić je na mniejsze bloki, należy użyć Decoder obiektu zwróconego przez GetDecoder metodę klasy pochodnej.
Zapoznaj się z sekcją Uwagi w Encoding.GetChars temacie referencyjnym, aby zapoznać się z omówieniem technik dekodowania i zagadnień.
Należy pamiętać, że dokładne zachowanie GetString metody dla określonej Encoding implementacji zależy od strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET .
Zobacz też
Dotyczy
GetString(Byte[], Int32, Int32)
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
- Źródło:
- Encoding.cs
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów do ciągu.
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
Parametry
- bytes
- Byte[]
Tablica bajtów zawierająca sekwencję bajtów do dekodowania.
- index
- Int32
Indeks pierwszego bajtu do dekodowania.
- count
- Int32
Liczba bajtów do dekodowania.
Zwraca
Ciąg zawierający wyniki dekodowania określonej sekwencji bajtów.
Wyjątki
Tablica bajtów zawiera nieprawidłowe punkty kodu Unicode.
bytes
to null
.
index
wartość lub count
jest mniejsza niż zero.
-lub-
index
i count
nie oznaczają prawidłowego zakresu w elemecie bytes
.
Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
DecoderFallback parametr jest ustawiony na DecoderExceptionFallbackwartość .
Przykłady
Poniższy przykład odczytuje ciąg zakodowany w formacie UTF-8 z pliku binarnego reprezentowanego FileStream przez obiekt. W przypadku plików, które są mniejsze niż 2048 bajtów, odczytuje zawartość całego pliku do tablicy bajtów i wywołuje GetString(Byte[], Int32, Int32) metodę w celu przeprowadzenia dekodowania. W przypadku większych plików odczytuje 2048 bajtów jednocześnie do tablicy bajtów, wywołuje Decoder.GetCharCount(Byte[], Int32, Int32) metodę w celu określenia, ile znaków znajduje się w tablicy, a następnie wywołuje Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodę w celu przeprowadzenia dekodowania.
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.
W przykładzie użyto następującego tekstu, który powinien zostać zapisany w zakodowanym pliku UTF-8 o nazwie 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.
Uwagi
Jeśli dane, które mają zostać przekonwertowane, są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że należy podzielić je na mniejsze bloki, należy użyć Decoder metody lub Encoder dostarczonej przez GetDecoder metodę lub GetEncoder metodę, odpowiednio, klasy pochodnej.
Zapoznaj się z sekcją Uwagi w Encoding.GetChars temacie referencyjnym, aby zapoznać się z omówieniem technik dekodowania i zagadnień.