最近我發現我從文本文檔中讀取文件處理后再存入新文本文檔后,只要是有中文的都顯示亂碼了~~當我把中文去掉后一切又都正常了,而在我處理過程中,很確定沒有對中文進行處理。使用記事本打開發現沒有亂碼現象,但是在VC里顯示是亂碼,而且原來可以運行的也不能運行了,去掉中文后一切正常。
參考網上的一些資料發現:
- 操作系統默認編碼是大多是ANSI(具體有不同),txt記事本打開文件時默認以系統默認的缺省編碼方式打開(中文為GB2312),所以在記事本中打開時顯示正常。而VS打開以及新建文件使用的是UTF8編碼。所以會出現亂碼錯誤。解決辦法很簡單:
- 出現中文時,打開文件請使用:
StreamReader read = new StreamReader(filename, System.Text.Encoding("GB2312"));
或
String strContent=File.ReadAllText(filename,Encoding.GetEncoding("GB2312"));
新建文件請使用:
StreamWriter writer= new StreamWriter(filePath , false, Encoding.GetEncoding("GB2312"));
writer.Write(content);//content為要寫入的內容
sw.Flush();
sw.Close();
親測可用,問題解決! 網上找了弄了好久才解決掉。
切記:打開時要用,寫入是也要用!莫忘寫入時編碼!!切勿使用UTF8~~沒用的……
