0
我正在使用文件系统观察器来选择和转换文件的编码,文件被复制到目标但没有转换。我用的是下面的代码前面:文件系统观察器选择和转换XML编码
string xml = File.ReadAllText(FileName,ansi);
XDocument xmlDoc = XDocument.Parse(xml);
Console.WriteLine("1st");
File.WriteAllText(
FileName,
@"<?xml version=""1.0"" encoding=""utf-8""?>" + xml.ToString(),
utf8
);
if (File.Exists(destinationFile))
File.Delete(destinationFile);
File.Copy(FileName, destinationFile,true);
Console.WriteLine("File Copied" + " " + DateTime.Now.ToString("HH:mm:ss tt")); // for troubleshoooting only
Console.WriteLine("Press \'q\' to quit.");
Console.Write(CrL);
但这不是现在的工作,因为现在我得到的XML文件包含以下标题:
<?xml version="1.0" encoding="WINDOWS-1256"?>
我刚才所说下面的代码:
var doc = new XmlDocument();
doc.Load(FileName);
XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent=true };
using (var fileStream = File.OpenWrite(destinationFile))
{
using (var writer = XmlWriter.Create(fileStream, settings))
{
doc.Save(writer);
}
}
但是这根本没有做转换。 dest。文件仍然是ansi。它没有转换到utf8。我在这里做得不对
“Dest文件仍然是ANSI。”你如何检查它? – 2013-02-14 06:51:32
使用记事本或记事本++。它仍然显示我ansi – user726720 2013-02-14 07:18:02
该代码(使用'XmlWriter'类)工作得很好:它以BOM形式创建UTF-8编码的XML文件(使用任何十六进制编辑器打开文件,您可以看到BOM - 前三个字节)。此外,记事本++显示该文件采用UTF-8编码。 – 2013-02-14 07:43:27