2013-02-13 2 views
7

MemoryStream의 XML 파일 (zip 아카이브의)을 열어서이 스트림의 StreamReader 폼을 만들어 GridView에 저장하려고합니다. 내 XML 파일이 ANSI로 인코딩하는 경우MemoryStream UTF8 인코딩의 StreamReader

MemoryStream ms = new MemoryStream(); 
entry.Extract(ms); 
StreamReader reader = new StreamReader(ms); 
DataSet ds = new DataSet(); 
ds.ReadXml(reader); 
dataGridView1.DataSource = GlobalDs.Tables[0]; 

, 그것은 완벽하게 작동합니다 :

은이 코드를 사용합니다. 하지만 UTF8로 인코딩 된 파일을로드 할 때, 그것은 실패, 심지어 그와 같은 StreamReader를 초기화 :

StreamReader reader = new StreamReader(ms, System.Text.Encoding.UTF8); 

나는 누군가가 내 문제를 해결하기 위해 아이디어를 바랍니다. 사용

+0

귀하의 코드는 거의 의미가, 당신은 실제로 독자를 사용하고 있지 않습니다. DataSet.ReadXml()에는 독자를 데려 오는 것을 포함하여 많은 오버로드가 있습니다. –

+0

'StreamReader'를 사용하여 파일을 읽지 않습니다. 'ds.ReadXml' 호출에서 사용하십시오. –

+0

고정, 내 실수로 죄송합니다 – flow

답변

17

시도 :

StreamReader reader = new StreamReader(ms, System.Text.Encoding.UTF8, true); 

세 번째 PARAM은 detectEncodingFromByteOrderMarks (msdn)입니다

+5

고마워하지만 작동하지 않습니다 : ( – flow