C# - 文字列の文字数とバイト数を取得する

文字数を取得するにはLengthプロパティ、バイト数を取得するには Encoding クラスを使用します。

文字数の取得方法

Lengthプロパティを使用します。Lengthプロパティは全角文字(2Byte文字・多バイト文字)の場合も1文字としてカウントします。
int 文字数 = 対象の文字列.Length

次のコードは「全角かな・半角カナ・半角数字」の混在した文字列の文字数を表示します。Lengthプロパティは全角半角を区別しないため、 15文字を返します。

// 全角かな・半角カナ・半角数字の混在した文字列
string stringValue = "あいうえおカキクケコ12345";

// 文字数を取得
int numberOfCharacters = stringValue.Length;

// 結果 = 文字数 :15
System.Console.WriteLine($"文字数  : {numberOfCharacters}");

バイト数の取得方法

バイト数を取得するには Encodingクラス を使用します。Encoding.GetEncoding()メソッドの引数に コードページ名 を渡して Encodingクラスのインスタンスを生成し、GetByteCount()メソッド に文字列を渡すとバイト数を返します。

.NETCore系で Shift-JIS を使用するには Encoding.RegisterProvider()でコードページ エンコーディング プロバイダーの登録が必要です。詳細は次の記事を参照してください。

次のコードは shift-jis でのバイト数の取得方法です。
using System.Text;

// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要。)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

// Shift-JISでのバイト数を取得する
Encoding shiftJisEncoding = Encoding.GetEncoding("shift_jis");
int バイト数 = shiftJisEncoding.GetByteCount(対象の文字列);

次のコードは UTF-8 でのバイト数の取得方法です。

using System.Text;

// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要。)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

// UTF-8でのバイト数を取得する
Encoding utf8Encoding = Encoding.UTF8;
int バイト数 = utf8Encoding.GetByteCount(対象の文字列);

サンプルコード

全角かな・半角カナ・半角数字の混在した文字列の文字数、Shift-JISでのバイト数、UTF-8でのバイト数を取得し、表示します。
using System.Text;


// 全角かな・半角カナ・半角数字の混在した文字列
string stringValue = "あいうえおカキクケコ12345";

// 文字数を取得
int numberOfCharacters = stringValue.Length;

// 結果 = 文字数: 15
System.Console.WriteLine($"文字数  : {numberOfCharacters}");


// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


// Shift-JISでのバイト数を取得する
Encoding shiftJisEncoding = Encoding.GetEncoding("shift_jis");
int numberOfBytesShiftJis = shiftJisEncoding.GetByteCount(stringValue);

// 結果 = Shift-JISのバイト数: 20
System.Console.WriteLine($"Shift-JISのバイト数: {numberOfBytesShiftJis}");


// UTF-8でのバイト数を取得する
Encoding utf8Encoding = Encoding.UTF8;
int numberOfBytesUtf8 = utf8Encoding.GetByteCount(stringValue);

// 結果 = UTF-8のバイト数: 35
System.Console.WriteLine($"UTF-8のバイト数: {numberOfBytesUtf8}");
サンプルコードの実行結果
サンプルコードの実行結果

参考資料

検証環境