2
我有一個將內容寫入文件的StringBuilder。在每個文件的末尾,我正在寫着版權符號。奇怪的是,我注意到,每當版權符號被寫入時,它都以「Â」開頭。我的代碼生成該文件的內容如下所示:C# - 文件編碼問題
using (StringWriter stringWriter = new StringWriter())
{
stringWriter = GetFileContent();
string targetPath = ConfigurationManager.AppSettings["TargetPath"];
using (StreamWriter streamWriter = new StreamWriter(targetPath, false))
{
StringBuilder sb = new StringBuilder(stringWriter.ToString());
// Attempted fix
string content = sb.ToString();
content = content.Replace("Â", "");
streamWriter.Write(content);
}
}
正如你所看到的,我試圖做一個查找和替換。在這個過程中,我注意到一個「Â」不在內容本身。這使我相信在streamWriter中發生了一些事情。但是,我不確定它會是什麼。
有人可以告訴我爲什麼在「©」符號之前會彈出「?」以及如何解決?我相信它與編碼有關,但我不確定
謝謝!
我認爲StreamWriter使用的默認編碼是System.Text.Encoding.Default,這是平臺特定的不是嗎? – Glenn 2010-03-25 21:29:19
@Caelum:不,它默認使用UTF-8。 'Encoding.Default'在這方面有點誤導性地命名。幾乎所有的.NET API都默認爲UTF-8。 – 2010-03-25 21:36:12
所以它呢,猜我應該讀更多的doco .... – Glenn 2010-03-25 21:39:48