UTF7Encoding.GetString(Byte[], Int32, Int32) 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í.
Dekóduje rozsah bajtů z pole bajtů do řetězce.
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
Parametry
- bytes
- Byte[]
Pole bajtů obsahující posloupnost bajtů k dekódování.
- index
- Int32
Index prvního bajtu k dekódování.
- count
- Int32
Počet bajtů k dekódování.
Návraty
Obsahující String výsledky dekódování zadané posloupnosti bajtů.
- Atributy
Výjimky
bytes
je null
(Nothing
).
index
nebo count
je menší než nula.
-nebo-
index
a count
neoznamují platnou oblast v bytes
souboru .
Došlo k náhradnímu použití (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 kódu zakóduje řetězec do pole bajtů a poté dekóduje bajty zpět do řetězce.
using namespace System;
using namespace System::Text;
int main()
{
// Create an instance of UTF7Encoding.
UTF7Encoding^ u7 = gcnew UTF7Encoding( true );
// Create byte arrays from the same string containing the following characters:
// Latin Small Letter Z (U+007A)
// Latin Small Letter A (U+0061)
// Combining Breve (U+0306)
// Latin Small Letter AE With Acute (U+01FD)
// Greek Small Letter Beta (U+03B2)
String^ myStr = "za\u0306\u01FD\u03B2";
// Encode the string.
array<Byte>^myBArr = gcnew array<Byte>(u7->GetByteCount( myStr ));
u7->GetBytes( myStr, 0, myStr->Length, myBArr, 0 );
// Decode the byte array.
Console::WriteLine( "The new string is: {0}", u7->GetString( myBArr, 0, myBArr->Length ) );
}
/*
This code produces the following output. The question marks take the place of characters that cannot be displayed at the console.
The new string is: za??
*/
using System;
using System.Text;
public class SamplesUTF7Encoding {
public static void Main() {
// Create an instance of UTF7Encoding.
UTF7Encoding u7 = new UTF7Encoding( true );
// Create byte arrays from the same string containing the following characters:
// Latin Small Letter Z (U+007A)
// Latin Small Letter A (U+0061)
// Combining Breve (U+0306)
// Latin Small Letter AE With Acute (U+01FD)
// Greek Small Letter Beta (U+03B2)
String myStr = "za\u0306\u01FD\u03B2";
// Encode the string.
byte[] myBArr = new byte[u7.GetByteCount( myStr )];
u7.GetBytes( myStr, 0, myStr.Length, myBArr, 0 );
// Decode the byte array.
Console.WriteLine( "The new string is: {0}", u7.GetString( myBArr, 0, myBArr.Length ) );
}
}
/*
This code produces the following output. The question marks take the place of characters that cannot be displayed at the console.
The new string is: za??
*/
Imports System.Text
Public Class SamplesUTF7Encoding
Public Shared Sub Main()
' Create an instance of UTF7Encoding.
Dim u7 As New UTF7Encoding(True)
' Create byte arrays from the same string containing the following characters:
' Latin Small Letter Z (U+007A)
' Latin Small Letter A (U+0061)
' Combining Breve (U+0306)
' Latin Small Letter AE With Acute (U+01FD)
' Greek Small Letter Beta (U+03B2)
Dim myStr As String = "za" & ChrW(&H0306) & ChrW(&H01FD) & ChrW(&H03B2)
' Encode the string.
Dim myBArr(u7.GetByteCount(myStr)) As Byte
u7.GetBytes(myStr, 0, myStr.Length, myBArr, 0)
' Decode the byte array.
Console.WriteLine("The new string is: {0}", u7.GetString(myBArr, 0, myBArr.Length))
End Sub
End Class
'This code produces the following output. The question marks take the place of characters that cannot be displayed at the console.
'
'The new string is: za??ß
Poznámky
Data, která se mají převést, například data přečtená z datového proudu, můžou být k dispozici pouze v sekvenčních blocích. V takovém případě nebo pokud je množství dat tak velké, že je potřeba je rozdělit na menší bloky, měla by aplikace použít metodu Decoder nebo Encoder metodu, která je poskytována GetDecoder metodou GetEncoder v uvedeném pořadí.
Poznámka
UTF7Encoding neposkytuje detekci chyb. Když se najdou neplatné bajty, UTF7Encoding obvykle vygeneruje neplatné bajty. Pokud je bajt větší než hexadecimální 0x7F, je hodnota bajtu rozšířena na znak Unicode nula, výsledek je uložen v chars
poli a všechny sekvence posunu jsou ukončeny. Pokud je například bajt ke kódování šestnáctkového 0x81, výsledný znak je U+0081. Z bezpečnostních důvodů se doporučuje, aby aplikace používaly UTF8Encoding, UnicodeEncodingnebo UTF32Encoding a povolily detekci chyb.