Sto cercando di copiare un flusso di byte da un database, codificarlo e infine visualizzarlo su una pagina web. Tuttavia, sto notando un comportamento diverso che codifica per il contenuto in modi diversi (nota: Sto usando la codifica "occidentale europea", che ha un set di caratteri latini e non supporta i caratteri cinesi):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));
Se il contenuto contiene caratteri cinesi rispetto al primo blocco di codice produrrà una stringa come "D $ 教学 而 设计 的", che non è corretto in quanto la codifica non dovrebbe sostenere quei personaggi, mentre il secondo blocco produrrà "D $ æ • ™ å|è € Œè®¾è®¡çš" "che è corretto poichè quelli sono tutti nel set di caratteri dell'Europa occidentale.
Qual è la spiegazione di questa differenza di comportamento?
Grazie! ora producono la stessa stringa. Per curiosità, quale blocco di codice suggerisci è meglio usare? Ci sono vantaggi o svantaggi di entrambi? – Sidawy