2010-03-25 70 views
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中发生了一些事情。但是,我不确定它会是什么。

有人可以告诉我为什么在“©”符号之前会弹出“?”以及如何解决?我相信它与编码有关,但我不确定

谢谢!

回答

2

问题几乎可以肯定的是你以后如何查看文件(它将被保存为UTF-8)或者你如何读取GetFileContent()中现有文件的内容。如果你可以给我们更多关于这两点的信息,我相信我们会找到答案。

你得到的实际代码 - 虽然有点奇怪和冗长,因为你试图解决问题 - 很好。

我的猜测是您正在使用假定Windows-1252或类似的文本编辑器查看文件。如果你可以告诉它使用UTF-8,我怀疑它会没事的。

+0

我认为StreamWriter使用的默认编码是System.Text.Encoding.Default,这是平台特定的不是吗? – Glenn 2010-03-25 21:29:19

+0

@Caelum:不,它默认使用UTF-8。 'Encoding.Default'在这方面有点误导性地命名。几乎所有的.NET API都默认为UTF-8。 – 2010-03-25 21:36:12

+0

所以它呢,猜我应该读更多的doco .... – Glenn 2010-03-25 21:39:48