Encoding.GetString Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Ha felülbírál egy származtatott osztályban, bájtok sorozatát sztringgé dekódolja.
Túlterhelések
| Name | Description |
|---|---|
| GetString(Byte[]) |
Származtatott osztályban felülbírálva a megadott bájttömb összes bájtját sztringgé alakítja. |
| GetString(ReadOnlySpan<Byte>) |
Származtatott osztályban felülbírálva a megadott bájttartomány összes bájtját sztringgé alakítja. |
| GetString(Byte*, Int32) |
Ha egy származtatott osztályban felülbírál, egy megadott címtől kezdődően megadott számú bájtot kódol sztringgé. |
| GetString(Byte[], Int32, Int32) |
Ha egy származtatott osztályban felülbírál, a megadott bájttömbből származó bájtok sorozatát sztringgé dekódolja. |
GetString(Byte[])
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
Származtatott osztályban felülbírálva a megadott bájttömb összes bájtját sztringgé alakítja.
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
Paraméterek
- bytes
- Byte[]
A dekódolni kívánt bájtok sorozatát tartalmazó bájttömb.
Válaszok
Egy sztring, amely a megadott bájtsorozat dekódolásának eredményeit tartalmazza.
Kivételek
A bájttömb érvénytelen Unicode-kódpontokat tartalmaz.
bytes az null.
Hiba történt (további információ:
-és-
DecoderFallback DecoderExceptionFallbackértékre van állítva.
Példák
Az alábbi példa egy UTF-8 kódolt sztringet olvas be egy objektum által FileStream képviselt bináris fájlból. A 2048 bájtnál kisebb fájlok esetében a teljes fájl tartalmát beolvassa egy bájttömbbe, és meghívja a GetString(Byte[]) metódust a dekódolás végrehajtására. Nagyobb fájlok esetén egyszerre 2048 bájtot olvas be egy bájttömbbe, meghívja a Decoder.GetCharCount(Byte[], Int32, Int32) metódust annak meghatározására, hogy hány karakter található a tömbben, majd meghívja a Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metódust a dekódolás végrehajtásához.
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.
A példa a következő szöveget használja, amelyet egy Utf8Example.txtnevű UTF-8 kódolt fájlba kell menteni.
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.
Megjegyzések
Ha az átalakítandó adatok csak szekvenciális blokkokban (például adatfolyamból beolvasott adatokban) érhetők el, vagy ha az adatmennyiség olyan nagy, hogy kisebb blokkokra kell osztani, akkor a Decoder származtatott osztály metódusa által GetDecoder visszaadott objektumot kell használnia.
A dekódolási technikákról és szempontokról a Encoding.GetChars referenciatéma Megjegyzések szakaszában olvashat.
Vegye figyelembe, hogy egy GetString adott Encoding implementáció metódusának pontos viselkedése az objektumhoz Encoding definiált tartalék stratégiától függ. További információt a Karakterkódolás .NET témakör "Tartalék stratégia kiválasztása" című szakaszában talál.
Lásd még
A következőre érvényes:
GetString(ReadOnlySpan<Byte>)
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
Származtatott osztályban felülbírálva a megadott bájttartomány összes bájtját sztringgé alakítja.
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
Paraméterek
- bytes
- ReadOnlySpan<Byte>
Írásvédett bájttartomány Unicode-sztringre való dekódolásához.
Válaszok
Egy sztring, amely a megadott írásvédett tartományból származó dekódolt bájtokat tartalmazza.
Megjegyzések
A GetString módszer célja a teljesítmény optimalizálása. Felügyelt bájttömb létrehozása és dekódolása helyett ezt a metódust úgy hívhatja meg, hogy nem kell köztes objektumokat létrehoznia.
Ha az átalakítandó adatok csak szekvenciális blokkokban (például adatfolyamból beolvasott adatokban) érhetők el, vagy ha az adatmennyiség olyan nagy, hogy kisebb blokkokra kell osztani, akkor a Decoder származtatott osztály metódusa által GetDecoder visszaadott objektumot kell használnia.
A dekódolási technikákról és szempontokról a Encoding.GetChars referenciatéma Megjegyzések szakaszában olvashat.
Vegye figyelembe, hogy egy GetString adott Encoding implementáció metódusának pontos viselkedése az objektumhoz Encoding definiált tartalék stratégiától függ. További információt a Karakterkódolás .NET témakör "Tartalék stratégia kiválasztása" című szakaszában talál.
A következőre érvényes:
GetString(Byte*, Int32)
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
Fontos
Ez az API nem CLS-kompatibilis.
Ha egy származtatott osztályban felülbírál, egy megadott címtől kezdődően megadott számú bájtot kódol sztringgé.
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
Paraméterek
- bytes
- Byte*
Mutató egy bájttömbhöz.
- byteCount
- Int32
A dekódolni kívánt bájtok száma.
Válaszok
Egy sztring, amely a megadott bájtsorozat dekódolásának eredményeit tartalmazza.
- Attribútumok
Kivételek
bytes null mutató.
byteCount kisebb, mint nulla.
Hiba történt (a teljes magyarázatért tekintse meg
-és-
DecoderFallback DecoderExceptionFallbackértékre van állítva.
Megjegyzések
A GetString módszer úgy lett kialakítva, hogy optimalizálja a teljesítményt, ha natív mutatóval rendelkezik egy bájttömbhöz. Felügyelt bájttömb létrehozása és dekódolása helyett ezt a metódust úgy hívhatja meg, hogy nem kell köztes objektumokat létrehoznia.
Ha az átalakítandó adatok csak szekvenciális blokkokban (például adatfolyamból beolvasott adatokban) érhetők el, vagy ha az adatmennyiség olyan nagy, hogy kisebb blokkokra kell osztani, akkor a Decoder származtatott osztály metódusa által GetDecoder visszaadott objektumot kell használnia.
A dekódolási technikákról és szempontokról a Encoding.GetChars referenciatéma Megjegyzések szakaszában olvashat.
Vegye figyelembe, hogy egy GetString adott Encoding implementáció metódusának pontos viselkedése az objektumhoz Encoding definiált tartalék stratégiától függ. További információt a Karakterkódolás .NET témakör "Tartalék stratégia kiválasztása" című szakaszában talál.
Lásd még
A következőre érvényes:
GetString(Byte[], Int32, Int32)
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
- Forrás:
- Encoding.cs
Ha egy származtatott osztályban felülbírál, a megadott bájttömbből származó bájtok sorozatát sztringgé dekódolja.
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
Paraméterek
- bytes
- Byte[]
A dekódolni kívánt bájtok sorozatát tartalmazó bájttömb.
- index
- Int32
A dekódolni kívánt első bájt indexe.
- count
- Int32
A dekódolni kívánt bájtok száma.
Válaszok
Egy sztring, amely a megadott bájtsorozat dekódolásának eredményeit tartalmazza.
Kivételek
A bájttömb érvénytelen Unicode-kódpontokat tartalmaz.
bytes az null.
index vagy count kisebb, mint nulla.
-vagy-
index és count ne jelölje az érvényes tartományt a következőben bytes: .
Hiba történt (további információ:
-és-
DecoderFallback DecoderExceptionFallbackértékre van állítva.
Példák
Az alábbi példa egy UTF-8 kódolt sztringet olvas be egy objektum által FileStream képviselt bináris fájlból. A 2048 bájtnál kisebb fájlok esetében a teljes fájl tartalmát beolvassa egy bájttömbbe, és meghívja a GetString(Byte[], Int32, Int32) metódust a dekódolás végrehajtására. Nagyobb fájlok esetén egyszerre 2048 bájtot olvas be egy bájttömbbe, meghívja a Decoder.GetCharCount(Byte[], Int32, Int32) metódust annak meghatározására, hogy hány karakter található a tömbben, majd meghívja a Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metódust a dekódolás végrehajtásához.
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.
A példa a következő szöveget használja, amelyet egy Utf8Example.txtnevű UTF-8 kódolt fájlba kell menteni.
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.
Megjegyzések
Ha az átalakítandó adatok csak szekvenciális blokkokban (például adatfolyamból beolvasott adatokban) érhetők el, vagy ha az adatmennyiség olyan nagy, hogy kisebb blokkokra kell osztani, akkor a Decoder metódus vagy a származtatott osztály Encoder metódusa által biztosított GetDecoder vagy GetEncoder kell használnia.
A dekódolási technikákról és szempontokról a Encoding.GetChars referenciatéma Megjegyzések szakaszában olvashat.