在C#中从Base64解码

我创建了XML Document并将此文档保存为

XmlDocument xmlDoc = new XmlDocument(); XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); xmlDoc.AppendChild(dec); XmlTextWriter writer = new XmlTextWriter(fullPath,Encoding.UTF8); writer.Formatting = Formatting.Indented; xMLDoc.Save(writer); writer.Flush(); 

然后我使用Base64 Encoder编码了这个文档

解码器无法解析XML文件。 我自己创建了解码器并得到了这个结果

  ?\r\n\r\n \r\n 

请帮我解决这个问题。 我如何保存XML文件以避免问题? 或者我如何编码到Base 64来解决问题? 我使用base64编码器来编码xml文件。 我要求提供文件。 需要使用base64编码器。 我解码自己检查问题在哪里。 解码器是Java。 他们无法解析我认为的xml文件,因为?<在文档前面。

这取决于你如何编码它,但你应该使用UTF-8,因为文档是这样声明的。 以下是编码和解码的示例:

请参阅Jon Skeet的答案:
C#base64编码/解码与对象序列化问题

编码:

 public string EncodeStringToBase64(string stringToEncode) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(stringToEncode)); } 

要解码:

 public string DecodeStringFromBase64(string stringToDecode) { return Encoding.UTF8.GetString(Convert.FromBase64String(stringToDecode)); } 

另一个选项 – 可能是由新的XmlTextWriter(fullPath,Encoding.UTF8)创建的默认Utf-8流中的BOM;

考虑使用UTF8的第二个构造函数 – http://msdn.microsoft.com/en-us/library/s064f8w2.aspx ,它不会将BOM插入流中。