Tôi đang cố gắng tạo một chuỗi ngẫu nhiên trong .NET và chuyển đổi thành byte và gặp sự cố nhỏ. Tôi muốn tập hợp đầy đủ các ký tự có thể, và sự hiểu biết của tôi là một chuỗi có thể chứa bất kỳ ký tự nào.Tạo chuỗi ngẫu nhiên
Mã của tôi hiện nay là như sau:
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);
Về lý thuyết, plainText
và result
nên giống hệt nhau. Chúng hầu như giống nhau, nhưng một số ký tự ban đầu bị mất, dường như là các ký tự trong phạm vi 55000-57000 - chúng được thay thế bằng ký tự 65533.
Tôi giả định vấn đề là với mã hóa của tôi, nhưng tôi nghĩ Unicode sẽ xử lý điều này đúng cách. Tôi đã thử UTF8 và UTF32, nhưng những người cho tôi cùng một vấn đề.
Mọi suy nghĩ?
lạ ?! unicode có thể được, nhưng khi bạn thử nghiệm nó với utf-32 ?! – TheHe
Bạn đang cố gắng đạt được điều gì? – CodesInChaos
Tôi giả sử bạn đang sản xuất một chuỗi UTF-16 không hợp lệ với các ký tự đại diện chưa được ghép nối. – CodesInChaos