Sto provando a generare una stringa casuale in .NET e convertire in byte, e in esecuzione in una piccola difficoltà. Mi piacerebbe la serie completa di possibili personaggi, e la mia comprensione è che una stringa può contenere qualsiasi personaggio.Generazione di una stringa casuale
Il mio codice è attualmente la seguente:
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);
In teoria, plainText
e result
dovrebbero essere identici. Sono quasi tutti uguali, ma alcuni dei personaggi originali sono persi, sembra essere un personaggio della gamma 55000-57000 - sono sostituiti con il carattere 65533.
Sto assumendo che il problema sia con la mia codifica, ma ho pensato che Unicode avrebbe gestito correttamente questo. Ho provato UTF8 e UTF32, ma quelli mi danno lo stesso problema.
Qualche idea?
strano ?! unicode potrebbe essere, ma quando lo hai testato con utf-32 ?! – TheHe
Cosa stai cercando di ottenere? – CodesInChaos
Suppongo che tu stia producendo una stringa UTF-16 non valida con caratteri surrogati non accoppiati. – CodesInChaos