UTF7Encoding.GetChars Metoda

Definicja

Dekoduje sekwencję bajtów do zestawu znaków.

Przeciążenia

GetChars(Byte*, Int32, Char*, Int32)

Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów do zestawu znaków przechowywanych w określonym wskaźniku znaków.

GetChars(Byte[], Int32, Int32, Char[], Int32)

Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.

GetChars(Byte*, Int32, Char*, Int32)

Źródło:
UTF7Encoding.cs
Źródło:
UTF7Encoding.cs
Źródło:
UTF7Encoding.cs

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów do zestawu znaków przechowywanych w określonym wskaźniku znaków.

public:
 override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int

Parametry

bytes
Byte*

Wskaźnik do pierwszego bajtu w celu dekodowania.

byteCount
Int32

Liczba bajtów do dekodowania.

chars
Char*

Wskaźnik do lokalizacji, w której chcesz rozpocząć pisanie wynikowego zestawu znaków.

charCount
Int32

Maksymalna liczba znaków do zapisania.

Zwraca

Rzeczywista liczba znaków zapisanych w lokalizacji wskazanej przez chars.

Atrybuty

Wyjątki

bytes is null (Nothing).

-lub-

chars is null (Nothing).

byteCount wartość lub charCount jest mniejsza niż zero.

charCount jest mniejsza niż wynikowa liczba znaków.

Wystąpił rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

DecoderFallback jest ustawiona na DecoderExceptionFallbackwartość .

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetChars do przechowywania wynikowych znaków, użyj polecenia GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć polecenia GetMaxCharCount. Metoda GetCharCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub Encoder dostarczonej GetDecoder odpowiednio przez metodę lub GetEncoder metodę.

Uwaga

UTF7Encoding nie zapewnia wykrywania błędów. W przypadku napotkania UTF7Encoding nieprawidłowych bajtów zazwyczaj emituje nieprawidłowe bajty. Jeśli bajt jest większy niż szesnastkowy 0x7F, wartość bajtu jest od zera rozszerzona na znak Unicode, wynik jest przechowywany w chars tablicy, a każda sekwencja przesunięcia zostanie zakończona. Jeśli na przykład bajt do kodowania jest 0x81 szesnastkowy, wynikowy znak to U+0081. Ze względów bezpieczeństwa aplikacje są zalecane do używania UTF8Encodingfunkcji , UnicodeEncodinglub UTF32Encoding i włączania wykrywania błędów.

Zobacz też

Dotyczy

GetChars(Byte[], Int32, Int32, Char[], Int32)

Źródło:
UTF7Encoding.cs
Źródło:
UTF7Encoding.cs
Źródło:
UTF7Encoding.cs

Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.

public:
 override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

Parametry

bytes
Byte[]

Tablica bajtów zawierająca sekwencję bajtów do dekodowania.

byteIndex
Int32

Indeks pierwszego bajtu do dekodowania.

byteCount
Int32

Liczba bajtów do dekodowania.

chars
Char[]

Tablica znaków zawierająca wynikowy zestaw znaków.

charIndex
Int32

Indeks, na którym rozpocznie się pisanie wynikowego zestawu znaków.

Zwraca

Rzeczywista liczba znaków zapisanych w charspliku .

Wyjątki

bytes is null (Nothing).

-lub-

chars is null (Nothing).

byteIndex lub byteCountcharIndex jest mniejszy niż zero.

-lub-

byteindex i byteCount nie oznaczają prawidłowego zakresu w byteselemecie .

-lub-

charIndex nie jest prawidłowym indeksem w pliku chars.

chars nie ma wystarczającej pojemności od charIndex do końca tablicy, aby pomieścić wynikowe znaki.

Wystąpił rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

DecoderFallback jest ustawiona na DecoderExceptionFallbackwartość .

Przykłady

Poniższy przykład kodu pokazuje, jak za pomocą GetChars metody dekodować zakres elementów w tablicy bajtów i przechowywać wynik w tablicy znaków.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,84,70,55,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int charCount = utf7->GetCharCount( bytes, 2, 8 );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = utf7->GetChars( bytes, 2, 8, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}
using System;
using System.Text;

class UTF7EncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
             85,  84,  70,  55,  32,  69, 110,
             99, 111, 100, 105, 110, 103,  32,
             69, 120,  97, 109, 112, 108, 101
        };

        UTF7Encoding utf7 = new UTF7Encoding();

        int charCount = utf7.GetCharCount(bytes, 2, 8);
        chars = new Char[charCount];
        int charsDecodedCount = utf7.GetChars(bytes, 2, 8, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85,  84,  70,  55,  32,  69, 110, _
            99, 111, 100, 105, 110, 103,  32, _
            69, 120,  97, 109, 112, 108, 101 _
        }
        
        Dim utf7 As New UTF7Encoding()
        
        Dim charCount As Integer = utf7.GetCharCount(bytes, 2, 8)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = utf7.GetChars(bytes, 2, 8, chars, 0)
        
        Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetChars do przechowywania wynikowych znaków, użyj polecenia GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć polecenia GetMaxCharCount. Metoda GetCharCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub Encoder dostarczonej GetDecoder odpowiednio przez metodę lub GetEncoder metodę.

Uwaga

UTF7Encoding nie zapewnia wykrywania błędów. W przypadku napotkania UTF7Encoding nieprawidłowych bajtów zazwyczaj emituje nieprawidłowe bajty. Jeśli bajt jest większy niż szesnastkowy 0x7F, wartość bajtu jest od zera rozszerzona na znak Unicode, wynik jest przechowywany w chars tablicy, a każda sekwencja przesunięcia zostanie zakończona. Jeśli na przykład bajt do kodowania jest 0x81 szesnastkowy, wynikowy znak to U+0081. Ze względów bezpieczeństwa aplikacje są zalecane do używania UTF8Encodingfunkcji , UnicodeEncodinglub UTF32Encoding i włączania wykrywania błędów.

Zobacz też

Dotyczy