Encoding.GetString Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě dekóduje posloupnost bajtů do řetězce.
Přetížení
| Name | Description |
|---|---|
| GetString(Byte[], Int32, Int32) |
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného bajtového pole do řetězce. |
| GetString(Byte*, Int32) |
Při přepsání v odvozené třídě dekóduje zadaný počet bajtů počínaje zadanou adresou do řetězce. |
| GetString(Byte[]) |
Při přepsání v odvozené třídě dekóduje všechny bajty v zadané bajtové pole do řetězce. |
| GetString(ReadOnlySpan<Byte>) |
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném bajtu rozsahu do řetězce. |
GetString(Byte[], Int32, Int32)
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného bajtového pole do řetězce.
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[]
Bajtové pole obsahující posloupnost bajtů k dekódování.
- index
- Int32
Index prvního bajtu pro dekódování.
- count
- Int32
Počet bajtů, které se mají dekódovat.
Návraty
Řetězec, který obsahuje výsledky dekódování zadané sekvence bajtů.
Výjimky
Bajtové pole obsahuje neplatné body kódu Unicode.
bytes je null.
index nebo count je menší než nula.
nebo
index a count neoznamujte platný rozsah v bytes.
Došlo k záložnímu použití (další informace najdete v tématu Kódování znaků v .NET).
a
DecoderFallback je nastaveno na DecoderExceptionFallback.
Příklady
Následující příklad načte řetězec kódování UTF-8 z binárního souboru, který je reprezentován objektem FileStream . U souborů, které jsou menší než 2 048 bajtů, přečte obsah celého souboru do bajtového pole a volá metodu GetString(Byte[], Int32, Int32) pro dekódování. U větších souborů čte 2 048 bajtů najednou do bajtového pole, volá metodu Decoder.GetCharCount(Byte[], Int32, Int32) , která určuje, kolik znaků je obsaženo v poli, a potom volá metodu Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) k provedení dekódování.
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.
Příklad používá následující text, který by měl být uložen do souboru s kódováním UTF-8 s názvem 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.
Poznámky
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (jako jsou data načtená z datového proudu) nebo pokud je množství dat tak velké, že je potřeba je rozdělit na menší bloky, měli byste použít metodu Decoder nebo metodu Encoder poskytovanou metodou GetDecoder nebo GetEncoder v odvozené třídě.
V části Poznámky referenčního Encoding.GetChars tématu najdete diskuzi o technikách dekódování a aspektech.
Viz také
Platí pro
GetString(Byte*, Int32)
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Při přepsání v odvozené třídě dekóduje zadaný počet bajtů počínaje zadanou adresou do řetězce.
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
Parametry
- bytes
- Byte*
Ukazatel na bajtové pole.
- byteCount
- Int32
Počet bajtů, které se mají dekódovat.
Návraty
Řetězec, který obsahuje výsledky dekódování zadané sekvence bajtů.
- Atributy
Výjimky
bytes je ukazatel null.
Hodnota byteCount je menší než nula.
Došlo k záložnímu kódu (úplné vysvětlení najdete v tématu KódováníCharacter v .NET).
a
DecoderFallback je nastaveno na DecoderExceptionFallback.
Poznámky
Metoda GetString je navržena tak, aby optimalizovala výkon, pokud máte nativní ukazatel na pole bajtů. Místo vytvoření spravovaného bajtového pole a jeho dekódování můžete místo toho volat tuto metodu, aniž byste museli vytvářet žádné zprostředkující objekty.
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (jako jsou data načtená z datového proudu) nebo pokud je množství dat tak velké, že je potřeba je rozdělit na menší bloky, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.
V části Poznámky referenčního Encoding.GetChars tématu najdete diskuzi o technikách dekódování a aspektech.
Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro tento Encoding objekt. Další informace najdete v části "Volba záložní strategie" v tématu KódováníCharacter v tématu .NET.
Viz také
Platí pro
GetString(Byte[])
Při přepsání v odvozené třídě dekóduje všechny bajty v zadané bajtové pole do řetězce.
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[]
Bajtové pole obsahující posloupnost bajtů k dekódování.
Návraty
Řetězec, který obsahuje výsledky dekódování zadané sekvence bajtů.
Výjimky
Bajtové pole obsahuje neplatné body kódu Unicode.
bytes je null.
Došlo k záložnímu použití (další informace najdete v tématu Kódování znaků v .NET).
a
DecoderFallback je nastaveno na DecoderExceptionFallback.
Příklady
Následující příklad načte řetězec kódování UTF-8 z binárního souboru reprezentovaného objektem FileStream . U souborů, které jsou menší než 2 048 bajtů, přečte obsah celého souboru do bajtového pole a volá metodu GetString(Byte[]) pro dekódování. U větších souborů čte 2 048 bajtů najednou do bajtového pole, volá metodu Decoder.GetCharCount(Byte[], Int32, Int32) , která určuje, kolik znaků je obsaženo v poli, a potom volá metodu Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) k provedení dekódování.
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.
Příklad používá následující text, který by měl být uložen do souboru s kódováním UTF-8 s názvem 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.
Poznámky
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (jako jsou data načtená z datového proudu) nebo pokud je množství dat tak velké, že je potřeba je rozdělit na menší bloky, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.
V části Poznámky referenčního Encoding.GetChars tématu najdete diskuzi o technikách dekódování a aspektech.
Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro tento Encoding objekt. Další informace najdete v části "Volba záložní strategie" v tématu KódováníCharacter v tématu .NET.
Viz také
Platí pro
GetString(ReadOnlySpan<Byte>)
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném bajtu rozsahu do řetězce.
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>
Bajt jen pro čtení, který dekóduje řetězec Unicode.
Návraty
Řetězec, který obsahuje dekódované bajty z poskytnutého rozsahu jen pro čtení.
Poznámky
Metoda GetString je navržená tak, aby optimalizovala výkon. Místo vytvoření spravovaného bajtového pole a jeho dekódování můžete místo toho volat tuto metodu, aniž byste museli vytvářet žádné zprostředkující objekty.
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (jako jsou data načtená z datového proudu) nebo pokud je množství dat tak velké, že je potřeba je rozdělit na menší bloky, měli byste použít Decoder objekt vrácený GetDecoder metodou odvozené třídy.
V části Poznámky referenčního Encoding.GetChars tématu najdete diskuzi o technikách dekódování a aspektech.
Všimněte si, že přesné chování GetString metody pro konkrétní Encoding implementaci závisí na záložní strategii definované pro tento Encoding objekt. Další informace najdete v části "Volba záložní strategie" v tématu KódováníCharacter v tématu .NET.