UTF8Encoding.GetString(Byte[], Int32, Int32) 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.
Bájttartományt kódol egy bájttömbből egy sztringbe.
public:
override System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public override string GetString(byte[] bytes, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override string GetString(byte[] bytes, int index, int count);
override this.GetString : byte[] * int * int -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetString : byte[] * int * int -> string
Public Overrides 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
A String megadott bájtsorozat dekódolásának eredményeit tartalmazó fájl.
- Attribútumok
Kivételek
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: .
A hibaészlelés engedélyezve van, és bytes érvénytelen bájtsort tartalmaz.
Hiba történt (további információ:
-és-
DecoderFallback DecoderExceptionFallbackértékre van állítva.
Példák
Az alábbi példa inicializál egy tömböt a GetByteCount metódus meghívásával annak meghatározásához, hogy pontosan hány bájt szükséges egy kódolt sztringhez, majd adja hozzá a bájtsorrendjel (BOM) méretét. A példa ezután meghívja a metódust a GetPreamble BOM tömbben való tárolására, mielőtt meghívja a GetBytes metódust a kódolt bájtok tömbbe való tárolására. A példa ezután meghívja a metódust a GetString sztring dekódolásához.
using System;
using System.Text;
public class Example
{
public static void Main()
{
UTF8Encoding utf8 = new UTF8Encoding(true, true);
String s = "It was the best of times, it was the worst of times...";
// We need to dimension the array, since we'll populate it with 2 method calls.
Byte[] bytes = new Byte[utf8.GetByteCount(s) + utf8.GetPreamble().Length];
// Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length);
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length);
// Decode the byte array.
String s2 = utf8.GetString(bytes, 0, bytes.Length);
Console.WriteLine(s2);
}
}
// The example displays the following output:
// ?It was the best of times, it was the worst of times...
Imports System.Text
Module Example
Public Sub Main()
Dim utf8 As New UTF8Encoding(True, True)
Dim s As String = "It was the best of times, it was the worst of times..."
' We need to dimension the array, since we'll populate it with 2 method calls.
Dim bytes(utf8.GetByteCount(s) + utf8.GetPreamble().Length - 1) As Byte
' Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length)
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length)
' Decode the byte array.
Dim s2 As String = utf8.GetString(bytes, 0, bytes.Length)
Console.WriteLine(s2)
End Sub
End Module
' The example displays the following output:
' ?It was the best of times, it was the worst of times...
Vegye figyelembe, hogy ebben az esetben a dekódolt sztring eltér az eredeti sztringtől, mivel az U+FFFD 16 bites bájtsorrendjellel kezdődik. Ez azt jelenti, hogy a két sztring egyenlőtlenként lesz összehasonlítva, és ha a sztring kimenet, akkor az anyagjegyzék a "?" helyettesítő karakterként jelenik meg. Ha a sztring elején el szeretné távolítani a BOM-t, meghívhatja a metódust String.TrimStart .
Megjegyzések
Hibaészlelés esetén az érvénytelen sorrend miatt ez a módszer kivételt ArgumentException okoz. Hibaészlelés nélkül a rendszer figyelmen kívül hagyja az érvénytelen sorozatokat, és nincs kivétel.
Ha a dekódolandó bájtok tartománya tartalmazza a bájtsorrendjelet (BOM), és a bájttömböt nem BOM-tudatos típusú metódussal adták vissza, az U+FFFE karakter szerepel a metódus által visszaadott karaktertömbben. A metódus meghívásával eltávolíthatja.String.TrimStart
Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, használja a DecoderEncoder metódus vagy a GetEncoder metódus által GetDecoder megadott vagy megadott adatokat.