私は.NETでランダムな文字列を生成してバイトに変換しようとしていますが、少し難しいです。可能な文字の完全なセットが欲しいのですが、文字列には任意の文字を含めることができると理解しています。
私のコードは現在次のとおりです。
var plainText = new StringBuilder();
for (int j = 0; j < stringLength; ++j)
{
plainText.Append((char)_random.Next(char.MinValue, char.MaxValue));
}
byte[] x = Encoding.Unicode.GetBytes(plainText.ToString());
string result = Encoding.Unicode.GetString(x);
理論的には、plainText
とresult
は同一である必要があります。それらはほとんど同じですが、元の文字の一部が失われており、55000 ~ 57000 の範囲の文字のようです - それらは文字 65533 に置き換えられています。
問題はエンコーディングにあると思いますが、Unicode がこれを適切に処理すると思いました。UTF8 と UTF32 を試しましたが、同じ問題が発生します。
何かご意見は?