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í
GetString(Byte[]) |
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném bajtovém poli do řetězce. |
GetString(ReadOnlySpan<Byte>) |
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném rozsahu bajtu 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[], Int32, Int32) |
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů do řetězce. |
GetString(Byte[])
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném bajtovém poli 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[]
Pole bajtů obsahující posloupnost bajtů, které se mají dekódovat.
Návraty
Řetězec, který obsahuje výsledky dekódování zadané sekvence bajtů.
Výjimky
Pole bajtů obsahuje neplatné body kódu Unicode.
bytes
je null
.
Došlo k náhradnímu řešení (další informace najdete v tématu Kódování znaků v .NET).
-A-
DecoderFallback je nastavená na DecoderExceptionFallbackhodnotu .
Příklady
Následující příklad čte řetězec kódovaný 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 pole bajtů a zavolá metodu GetString(Byte[]) pro dekódování. U větších souborů přečte do pole bajtů 2 048 bajtů najednou, zavolá metodu Decoder.GetCharCount(Byte[], Int32, Int32) , která určí, kolik znaků je obsaženo v poli, a pak zavolá metodu Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) , která provede 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 (například v datech přečtených 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.
Informace o Encoding.GetChars technikách a aspektech dekódování najdete v části Poznámky v referenčním tématu.
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í znaků v .NET .
Viz také
Platí pro
GetString(ReadOnlySpan<Byte>)
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
Při přepsání v odvozené třídě dekóduje všechny bajty v zadaném rozsahu bajtu 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>
Rozsah bajtů jen pro čtení pro dekódování řetězce 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 pole bajtů a jeho dekódování můžete místo toho volat tuto metodu bez nutnosti vytvářet zprostředkující objekty.
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (například v datech přečtených 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.
Informace o Encoding.GetChars technikách a aspektech dekódování najdete v části Poznámky v referenčním tématu.
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í znaků v .NET .
Platí pro
GetString(Byte*, Int32)
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
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)]
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*
Ukazatel na pole bajtů.
- byteCount
- Int32
Počet bajtů k dekódování.
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 obnovení (úplné vysvětlení najdete v tématu Kódování znaků v .NET).
-A-
DecoderFallback je nastavená na DecoderExceptionFallbackhodnotu .
Poznámky
Metoda GetString je navržená tak, aby optimalizovala výkon, když máte nativní ukazatel na pole bajtů. Místo vytvoření spravovaného pole bajtů a jeho dekódování můžete místo toho volat tuto metodu bez nutnosti vytvářet zprostředkující objekty.
Pokud jsou data, která se mají převést, k dispozici pouze v sekvenčních blocích (například v datech přečtených 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.
Informace o Encoding.GetChars technikách a aspektech dekódování najdete v části Poznámky v referenčním tématu.
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í znaků v .NET .
Viz také
Platí pro
GetString(Byte[], Int32, Int32)
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
- Zdroj:
- Encoding.cs
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů 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[]
Pole bajtů obsahující posloupnost bajtů, které se mají dekódovat.
- index
- Int32
Index prvního bajtu, který se má dekódovat.
- count
- Int32
Počet bajtů k dekódování.
Návraty
Řetězec, který obsahuje výsledky dekódování zadané sekvence bajtů.
Výjimky
Pole bajtů obsahuje neplatné body kódu Unicode.
bytes
je null
.
index
nebo count
je menší než nula.
-nebo-
index
a count
neoznamujte platnou oblast v bytes
souboru .
Došlo k náhradnímu řešení (další informace najdete v tématu Kódování znaků v .NET).
-A-
DecoderFallback je nastavená na DecoderExceptionFallbackhodnotu .
Příklady
Následující příklad č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 pole bajtů a zavolá metodu GetString(Byte[], Int32, Int32) pro dekódování. U větších souborů přečte do pole bajtů 2 048 bajtů najednou, zavolá metodu Decoder.GetCharCount(Byte[], Int32, Int32) , která určí, kolik znaků je obsaženo v poli, a pak zavolá metodu Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) , která provede 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 (například 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 metodu nebo Encoder metodu poskytnutou GetDecoder metodou nebo GetEncoder metodou odvozené třídy.
Informace o Encoding.GetChars technikách a aspektech dekódování najdete v části Poznámky v referenčním tématu.