UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) Method

定義

バイト配列に格納されているある範囲のバイトを文字列にデコードします。Decodes a range of bytes from a byte array into a string.

public:
 override System::String ^ GetString(cli::array <System::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
Public Overrides Function GetString (bytes As Byte(), index As Integer, count As Integer) As String

パラメーター

bytes
Byte[]

デコード対象のバイト シーケンスが格納されたバイト配列。The byte array containing the sequence of bytes to decode.

index
Int32 Int32 Int32 Int32

デコードする最初のバイトのインデックス。The index of the first byte to decode.

count
Int32 Int32 Int32 Int32

デコードするバイト数。The number of bytes to decode.

戻り値

指定したバイト シーケンスのデコード結果が格納されている StringA String containing the results of decoding the specified sequence of bytes.

例外

index または count が 0 未満です。index or count is less than zero.

- または --or- index および countbytes において有効な範囲を表していません。index and count do not denote a valid range in bytes.

エラーの検出が有効になり、bytes に無効なバイト シーケンスが含まれています。Error detection is enabled, and bytes contains an invalid sequence of bytes.

フォールバックが発生しました (詳細な説明は、「.NET Framework における文字エンコーディング」をご覧ください)A fallback occurred (see Character Encoding in the .NET Framework for complete explanation) および-and- DecoderFallbackDecoderExceptionFallback に設定されます。DecoderFallback is set to DecoderExceptionFallback.

次の例では、 GetByteCountメソッドを呼び出して、エンコードされた文字列に必要なバイト数を正確に特定し、バイト順マーク (BOM) のサイズを追加することによって、配列を初期化します。The following example initializes an array by calling the GetByteCount method to determine exactly how many bytes are required for an encoded string and then adding the size of the byte order mark (BOM). 次に、メソッドをGetPreamble呼び出して、エンコードされたバイトを配列にGetBytes格納する前に、メソッドを呼び出して BOM を配列に格納します。The example then calls the GetPreamble method to store the BOM to the array before calling the GetBytes method to store the encoded bytes to the array. 次に、 GetStringメソッドを呼び出して文字列をデコードします。The example then calls the GetString method to decode the string.

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...

この場合、デコードされた文字列は、16ビットのバイトオーダーマーク (U + FFFD) で始まるため、元の文字列とは異なります。Note that in this case the decoded string differs from the original string, since it begins with a 16-bit byte order mark U+FFFD. つまり、2つの文字列は等しくないものとして比較され、文字列が出力されると、BOM は置換文字 "?" として表示されます。This means that the two strings will compare as unequal, and that if the string is output, the BOM will be displayed as the replacement character "?". 文字列の先頭にある BOM を削除するには、 String.TrimStartメソッドを呼び出すことができます。To remove the BOM at the beginning of the string, you can call the String.TrimStart method.

注釈

エラー検出を使用すると、無効なシーケンスによってArgumentExceptionこのメソッドが例外をスローします。With error detection, an invalid sequence causes this method to throw an ArgumentException exception. エラー検出を行わないと、無効なシーケンスは無視され、例外はスローされません。Without error detection, invalid sequences are ignored, and no exception is thrown.

デコードするバイト範囲にバイトオーダーマーク (BOM) が含まれており、そのバイト配列が非 BOM 対応型のメソッドによって返された場合は、このメソッドによって返される文字配列に U + FFFE という文字が含まれます。If the range of bytes to be decoded includes the byte order mark (BOM) and the byte array was returned by a method of a non-BOM aware type, the character U+FFFE is included in the character array returned by this method. String.TrimStartメソッドを呼び出すことで削除できます。You can remove it by calling the String.TrimStart method.

ストリームから読み取られたデータなど、変換されるデータは、連続したブロックでのみ使用できる可能性があります。Data to be converted, such as data read from a stream, might be available only in sequential blocks. この場合、またはデータ量が非常に大きく、小さいブロックに分割する必要がある場合Decoderは、 GetDecoderメソッドまたはGetEncoderメソッドEncoderによって提供されるまたはをそれぞれ使用します。In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

適用対象

こちらもご覧ください