ハードウェア デバイスに対して Unicode 文字列 (特に英語、ドイツ語、スペイン語、アラビア語) を読み書きする必要があるソフトウェア (c#) に取り組んでいます。ファームウェアの開発者は、自分のコードでは各文字列を固定長のバイト配列として 1 つのバイナリ ファイルに格納することを想定しているため、インデックス (インデックス * 長さ = 開始オフセット) を使用して任意の文字列にすばやくアクセスし、固定長のバイト数を読み取ることができると語っています。 )。.NET が内部的に UTF-16 エンコーディングを使用していることを理解していますが、これは技術的には可変長エンコーディング (Unicode コード ポイントの数によって異なります) であると私は信じています。UTF-16 を使用してエンコードされた場合、英語、ドイツ語、およびスペイン語はすべて 2 バイト/文字を使用することはかなり確信していますが、アラビア語についてはよくわかりません。
まず、UTF-8/UTF-16 エンコーディングの可変長の性質についての私の理解を誰か確認できますか? 次に、多くのスペースを浪費しますが、UTF-32 (固定サイズ、各文字を 4 バイトで表す) は、各文字列を固定長として格納できるようにするための最良のオプションですか? ありがとう!