Я пытаюсь скопировать поток байтов из базы данных, закодировать его и, наконец, отобразить на веб-странице. Однако я замечаю различное поведение, кодирующее содержимое по-разному (примечание: я использую «западноевропейскую» кодировку, которая имеет набор латинских символов и не поддерживает китайские символы):
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));
Если содержимое содержит китайские иероглифы, то первый блок кода создаст строку типа «D$教学而设计的», что неверно, поскольку кодировка не должна поддерживать эти символы, а второй блок выдаст «D$æ• ™å¦è€Œè®¾è®¡çš„", что является правильным, поскольку все они находятся в западноевропейском наборе символов.
Чем объясняется такая разница в поведении?