Ich versuche, eine zufällige Zeichenfolge in .NET zu generieren und in Bytes zu konvertieren, und in eine kleine Schwierigkeit zu laufen. Ich hätte gerne den vollen Satz möglicher Zeichen und mein Verständnis ist, dass eine Zeichenfolge ein beliebiges Zeichen enthalten kann.Erzeugen einer zufälligen Zeichenfolge
Mein Code ist zur Zeit wie folgt:
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);
Theoretisch plainText
und result
sollten identisch sein. Sie sind größtenteils gleich, aber einige der ursprünglichen Zeichen sind verloren, scheint Zeichen im Bereich 55000-57000 zu sein - sie werden durch Zeichen 65533 ersetzt.
Ich nehme an, das Problem ist mit meiner Codierung, aber ich dachte, Unicode würde damit richtig umgehen. Ich habe UTF8 und UTF32 versucht, aber diese geben mir das gleiche Problem.
Irgendwelche Gedanken?
seltsam ?! Unicode könnte sein, aber wenn du es mit utf-32 getestet hast ?! – TheHe
Was versuchen Sie zu erreichen? – CodesInChaos
Ich nehme an, dass Sie eine ungültige UTF-16-Zeichenfolge mit ungepaarten Ersatzzeichen produzieren. – CodesInChaos