2,000 行の DataGridView を含む C#/WinForms アプリケーションを作成しています。ユーザーはこれらの行に文字列を入力します。文字列はどの言語でもかまいませんが、最も可能性の高い 2 つの言語は英語とアラビア語です。文字列の最大文字数自体に明示的な制限はありませんが、ディスクに書き込まれるときに各文字列を保存するために 2048 バイトの制限があります。結果のバイト配列が 2048 バイト未満の場合は、null 文字を埋め込む必要があります。UTF-8 がおそらくこれらの文字列を格納するための最も効率的なエンコーディングになると思いますか? もしそうなら、文字列の保存を許可する前に、次のようにすることを考えていました。
byte[] stringAsBytes = System.Text.Encoding.UTF8.GetBytes(myString);
if (stringAsBytes.Length > 2048)
{
// string is too long to be stored in 2048 bytes
}
私の理解が正しければ、UTF-8 は可変長エンコーディングであるため、特定の文字列の最大文字数は、文字列の言語を構成する文字のコード ポイント範囲に依存しますか? そうであれば、文字列がストレージの最大サイズをいつ超えたかを正確に判断するために、キーを押すたびに上記のコードのようなことをする必要がありますか?