Tôi đang cố gắng sao chép một luồng byte từ một cơ sở dữ liệu, mã hóa nó và cuối cùng hiển thị nó trên một trang web. Tuy nhiên, tôi nhận thấy hành vi khác nhau mã hóa các nội dung theo những cách khác nhau (lưu ý: Tôi đang sử dụng "Tây Âu" mã hóa trong đó có một bộ ký tự Latin và không hỗ trợ ký tự Trung Quốc):C# MemoryStream Encoding Vs. Encoding.GetChars()
var encoding = Encoding.GetEncoding(1252 /*Western European*/);
using (var fileStream = new StreamReader(new MemoryStream(content), encoding))
{
var str = fileStream.ReadToEnd();
}
Vs.
var encoding = Encoding.GetEncoding(1252 /*Western European*/);
var str = new string(encoding.GetChars(content));
Nếu nội dung chứa các ký tự Trung Quốc so với khối đầu tiên của mã sẽ tạo ra một chuỗi như "D $ 教学 而 设计 的", mà là không chính xác bởi vì mã hóa không nên ủng hộ những nhân vật, trong khi khối thứ hai sẽ tạo ra "D $ æ • ™ å¦è € Œè®¾è®¡çš„ "đúng như tất cả trong bộ ký tự Tây Âu.
Giải thích cho sự khác biệt này trong hành vi là gì?
Cảm ơn! bây giờ họ sản xuất cùng một chuỗi. Ngoài sự tò mò, bạn đề xuất nên chặn mã nào tốt hơn? Có bất kỳ lợi thế hay bất lợi của một trong hai? – Sidawy