Delphiで文字列のバイト数を取得するには?

TEncodingクラスのGetByteCountメソッドを使えば、文字列のバイト数を簡単に取得できる。

文字列のバイト数は、その文字列のエンコーディング(文字コード)によって異なる。

まず、取得したいエンコーディングをサポートするTEncodingオブジェクトを取得する。

TEncoding.GetEncodingメソッドの引数にコードページまたは文字セットの名前を渡す。

Encoding := TEncoding.GetEncoding(932);
// Encoding := TEncoding.GetEncoding('Shift_JIS');

次に、バイト数を取得したい文字列を引数に指定してGetByteCountを呼び出す。

Len := Encoding.GetByteCount('こんにちわ');

次のサンプルプログラムでは、文字列のエンコーディングとバイト数を表示する。

var
  Encoding: TEncoding;
  Len: Integer;
begin
  //Shift_JIS
  Encoding := TEncoding.GetEncoding(932);
  Len := Encoding.GetByteCount('こんにちわ');
  Encoding.Free;
  Writeln(Format('%s = %d', ['Shift_JIS', Len])); //出力:Shift_JIS = 10

  //EUC-JP
  Encoding := TEncoding.GetEncoding(20932);
  Len := Encoding.GetByteCount('こんにちわ');
  Encoding.Free;
  Writeln(Format('%s = %d', ['EUC-JP', Len])); //出力:EUC-JP = 10

  //JIS(ISO-2022JP)
  Encoding := TEncoding.GetEncoding(50220);
  Len := Encoding.GetByteCount('こんにちわ');
  Encoding.Free;
  Writeln(Format('%s = %d', ['JIS', Len])); //出力:JIS = 16

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください