UTF7Encoding.GetString(Byte[], Int32, Int32) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Декодирует диапазон байтов из массива байтов в строку.
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
Параметры
- bytes
- Byte[]
Массив байтов, содержащий последовательность байтов, которую требуется декодировать.
- index
- Int32
Индекс первого декодируемого байта.
- count
- Int32
Число байтов для декодирования.
Возвращаемое значение
Объект String, содержащий результаты декодирования заданной последовательности байтов.
- Атрибуты
Исключения
bytes
имеет значение null
(Nothing
).
Значение параметра index
или count
меньше нуля.
-или-
Параметры index
и count
не указывают допустимый диапазон в bytes
.
Произошел откат (дополнительные сведения см. в разделе Кодировка символов в .NET).
- и -
Параметру DecoderFallback задается значение DecoderExceptionFallback.
Примеры
В следующем примере кода строка кодируется в массив байтов, а затем декодируется обратно в строку.
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??ß
Комментарии
Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что их нужно разделить на более мелкие блоки, приложение должно использовать Decoder или , предоставленные Encoder методом GetDecoder или методом GetEncoder соответственно.
Примечание
UTF7Encoding не обеспечивает обнаружение ошибок. При обнаружении UTF7Encoding недопустимых байтов обычно выдает недопустимые байты. Если байт больше шестнадцатеричного 0x7F, значение байта расширяется до нуля в символ Юникоде, результат сохраняется в массиве chars
, а любая последовательность сдвига завершается. Например, если кодируемый байт является шестнадцатеричным 0x81, результирующий символ — U+0081. Из соображений безопасности приложениям рекомендуется использовать UTF8Encoding, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.