C# 选择和转换XML编码的文件系统监视程序
我使用文件系统监视程序来选择和转换文件的编码,文件在目标位置被复制,但没有转换。我之前使用了以下代码:C# 选择和转换XML编码的文件系统监视程序,c#,xml,C#,Xml,我使用文件系统监视程序来选择和转换文件的编码,文件在目标位置被复制,但没有转换。我之前使用了以下代码: string xml = File.ReadAllText(FileName,ansi); XDocument xmlDoc = XDocument.Parse(xml); Console.WriteLine("1st"); File.WriteAllText( FileName,
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);
但这根本不是转换。目的地。文件仍然是ansi。它没有转换成utf8。我在这里做错了什么吗您正在用以下代码编写的原始文件重写输出文件(由
XmlWriter编写的文件):
if (File.Exists(destinationFile))
File.Delete(destinationFile);
File.Copy(fileName, destinationFile, true);
只需删除这些代码行
更新
使用Windows-1256编码编写XML文档:
var settings = new XmlWriterSettings
{
Encoding = Encoding.GetEncoding("windows-1256"),
Indent = true
};
“目标文件仍然是ansi。”如何检查它?使用记事本或记事本++。它仍然向我展示了ansiThe代码(使用XmlWriter
类)工作得很好:它使用BOM以UTF-8编码创建XML文件(使用任何十六进制编辑器打开文件,您可以看到BOM-前三个字节)。另外,记事本++显示文件是UTF-8编码的。@Sergey Brunov:谢谢您的检查。但在我这边,我正在用记事本++检查目标文件,编码菜单中没有一个编码被勾选,这意味着对我来说它不是utf8。是否有其他方法检查此记事本++。也许我的方式错了。或者我可以把最终的dest文件发送给你,让你检查。你有哪个版本的记事本+(我现在有6.2.3)?您也可以尝试Notepad2文本编辑器(它在主窗口的状态栏中显示编码)。
if (File.Exists(destinationFile))
File.Delete(destinationFile);
File.Copy(fileName, destinationFile, true);
var settings = new XmlWriterSettings
{
Encoding = Encoding.GetEncoding("windows-1256"),
Indent = true
};