ansiからUTF-8に変換したいxmlファイルを取得しています。元のxmlファイルにxml宣言がなかったため、最初はコードが機能していました。しかし最近、元のxmlファイルには次の宣言が含まれています。
<?xml version="1.0" encoding="WINDOWS-1256"?>
私のコードでは、ansiからuft-8に変換し、別のヘッダーを追加しています。
<?xml version="1.0" encoding="utf-8"?>
したがって、utf-8に変換するために新しいファイルをコードに渡した後、新しい宣言は次のようになります。
<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="WINDOWS-1256"?>
これは無効だと思います。
以下は私のコードです:
Encoding utf8 = new UTF8Encoding(false);
Encoding ansi = Encoding.GetEncoding(1256);
System.Threading.Thread.Sleep(2000);
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);
これの出力は、2つの宣言を含む文字化けしたアラビア語のテキストとして出力されます。コードのどこが間違っていますか。