我正在尝试从数据库中复制字节流,对其进行编码并最终将其显示在网页上。但是,我注意到以不同方式对内容进行编码的不同行为(注意:我使用的是具有拉丁字符集且不支持中文字符的“西欧”编码):
var encoding = Encoding.GetEncoding(1252 /*Western European*/);
using (var fileStream = new StreamReader(new MemoryStream(content), encoding))
{
var str = fileStream.ReadToEnd();
}
比。
var encoding = Encoding.GetEncoding(1252 /*Western European*/);
var str = new string(encoding.GetChars(content));
如果内容中包含汉字,那么第一段代码会产生类似“D$教学而设计的”这样的字符串,这是不正确的,因为编码不应该支持这些字符,而第二段代码会产生“D$æ•” ™å¦è€Œè®¾è®¡çš„”这是正确的,因为它们都在西欧字符集中。
这种行为差异的解释是什么?