0

ファイルシステムウォッチャーを使用してファイルのエンコーディングを選択して変換しています。ファイルは宛先にコピーされますが、変換は行われません。以前は次のコードを使用していました。

 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);
  }
} 

しかし、これは変換をまったく行っていません。目的地。ファイルはまだansiです。utf8への変換は行っていません。私はここで何か間違ったことをしていますか

4

1 に答える 1

0

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
    };
于 2013-02-14T11:14:38.567 に答える