Encoding.GetString Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När du åsidosättas i en härledd klass avkodar du en sekvens med byte till en sträng.
Överlagringar
| Name | Description |
|---|---|
| GetString(Byte[], Int32, Int32) |
När den åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen till en sträng. |
| GetString(Byte*, Int32) |
När det åsidosättas i en härledd klass avkodas ett angivet antal byte som börjar vid en angiven adress till en sträng. |
| GetString(Byte[]) |
När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en sträng. |
| GetString(ReadOnlySpan<Byte>) |
När de åsidosättas i en härledd klass avkodas alla byte i det angivna byteintervallet till en sträng. |
GetString(Byte[], Int32, Int32)
När den åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen till en sträng.
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
Parametrar
- bytes
- Byte[]
Bytematrisen som innehåller sekvensen med byte som ska avkodas.
- index
- Int32
Indexet för den första byte som ska avkodas.
- count
- Int32
Antalet byte som ska avkodas.
Returer
En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.
Undantag
Byte-matrisen innehåller ogiltiga Unicode-kodpunkter.
bytes är null.
index eller count är mindre än noll.
-eller-
index och count ange inte ett giltigt intervall i bytes.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
DecoderFallback är inställt på DecoderExceptionFallback.
Exempel
I följande exempel läss en UTF-8-kodad sträng från en binär fil som representeras av ett FileStream objekt. För filer som är mindre än 2 048 byte läser den innehållet i hela filen i en bytematris och anropar GetString(Byte[], Int32, Int32) metoden för att utföra avkodningen. För större filer läser den 2 048 byte åt gången i en bytematris, anropar Decoder.GetCharCount(Byte[], Int32, Int32) metoden för att fastställa hur många tecken som finns i matrisen och anropar Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) sedan metoden för att utföra avkodningen.
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.
I exemplet används följande text, som ska sparas i en UTF-8-kodad fil med namnet 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.
Kommentarer
Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läses från en dataström) eller, om mängden data är så stor att den måste delas upp i mindre block, bör du använda Decoder eller Encoder som tillhandahålls av metoden GetDecoder eller GetEncoder för en härledd klass.
Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.
Se även
Gäller för
GetString(Byte*, Int32)
Viktigt!
Detta API uppfyller inte CLS.
När det åsidosättas i en härledd klass avkodas ett angivet antal byte som börjar vid en angiven adress till en sträng.
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
Parametrar
- bytes
- Byte*
En pekare till en bytematris.
- byteCount
- Int32
Antalet byte som ska avkodas.
Returer
En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.
- Attribut
Undantag
bytes är en null-pekare.
byteCount är mindre än noll.
En återställning inträffade (se Character Encoding i .NET för en fullständig förklaring)
-och-
DecoderFallback är inställt på DecoderExceptionFallback.
Kommentarer
Metoden GetString är utformad för att optimera prestanda när du har en inbyggd pekare till en bytematris. I stället för att skapa en hanterad bytematris och sedan avkoda den kan du anropa den här metoden utan att behöva skapa några mellanliggande objekt.
Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.
Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.
Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.
Se även
Gäller för
GetString(Byte[])
När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en sträng.
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
Parametrar
- bytes
- Byte[]
Bytematrisen som innehåller sekvensen med byte som ska avkodas.
Returer
En sträng som innehåller resultatet av avkodning av den angivna sekvensen med byte.
Undantag
Byte-matrisen innehåller ogiltiga Unicode-kodpunkter.
bytes är null.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
DecoderFallback är inställt på DecoderExceptionFallback.
Exempel
I följande exempel läss en UTF-8-kodad sträng från en binär fil som representeras av ett FileStream objekt. För filer som är mindre än 2 048 byte läser den innehållet i hela filen i en bytematris och anropar GetString(Byte[]) metoden för att utföra avkodningen. För större filer läser den 2 048 byte åt gången i en bytematris, anropar Decoder.GetCharCount(Byte[], Int32, Int32) metoden för att fastställa hur många tecken som finns i matrisen och anropar Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) sedan metoden för att utföra avkodningen.
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.
I exemplet används följande text, som ska sparas i en UTF-8-kodad fil med namnet 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.
Kommentarer
Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.
Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.
Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.
Se även
Gäller för
GetString(ReadOnlySpan<Byte>)
När de åsidosättas i en härledd klass avkodas alla byte i det angivna byteintervallet till en sträng.
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
Parametrar
- bytes
- ReadOnlySpan<Byte>
Ett skrivskyddat byteintervall för att avkoda till en Unicode-sträng.
Returer
En sträng som innehåller de avkodade byteen från det angivna skrivskyddade intervallet.
Kommentarer
Metoden GetString är utformad för att optimera prestanda. I stället för att skapa en hanterad bytematris och sedan avkoda den kan du anropa den här metoden utan att behöva skapa några mellanliggande objekt.
Om data som ska konverteras endast är tillgängliga i sekventiella block (till exempel data som läse från en dataström) eller om mängden data är så stor att den måste delas in i mindre block, bör du använda Decoder objektet som returneras av GetDecoder metoden för en härledd klass.
Se avsnittet Kommentarer i referensavsnittet Encoding.GetChars för en diskussion om avkodningstekniker och överväganden.
Observera att metodens exakta beteende GetString för en viss Encoding implementering beror på den återställningsstrategi som definierats för objektet Encoding . Mer information finns i avsnittet "Välja en återställningsstrategi" i avsnittet Character Encoding i .NET.