在C#中解码Base64

9

我创建了XML文档,并将该文档保存为

  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编码器对这个文档进行了编码

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

 ?<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<ClinicalDocument 
 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
classCode=\"DOCCLIN\" moodCode=\"EVN\" schemaLocation=\"urn:hl7-org:v3
CDA.xsd\">\r\n  <typeId extension=\"POCD_HD000040\" root=\"2.16.840.1.113883.1.3
\" />\r\n

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


1
您还没有展示Base64编码器的处理方式。那是相关的代码... - Jon Skeet
1
这与base-64有什么关系?另外 - 我猜你是从IDE中复制了那个字符串,对吗?那不是实际的字符串 - 它是c#转义版本。 - Marc Gravell
关于你的问题,有很多我无法理解的地方。你使用什么工具来进行文件的base64编码/解码? - Shaun Wilde
既然我已经匆忙回答了有关Base64解码的问题,那么我要问一下 - 你想用这个做什么?你的目标是什么? - James Johnson
嗨大家。我正在尝试访问评论。我正在编码XML文件并将此编码文件作为请求发送。解码器无法解析该文件。当他们解析我的请求时,他们一直收到错误。您想了解代码的确切信息是什么?谢谢 - Rose
@Rose:你是用什么编码方式进行编码的呢?如果不知道你使用了哪种编码方式,我们就无法告诉你如何解码。UTF-8、ASCII、Unicode?我猜你使用了ASCII编码方式,因此在解码后的字符串前面出现了“?”符号。你应该使用UTF-8编码方式。 - James Johnson
2个回答

27

这取决于你使用的编码方式,但由于文档已经声明为UTF-8,因此你应该使用UTF-8。以下是编码和解码的示例:

可以查看Jon Skeet在这里的答案:
C# base64 encoding/decoding with serialization of objects issue

要进行编码:

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

解码:

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

你为什么要引入压缩技术?那里的大部分代码都与压缩有关... - Jon Skeet
糟糕!我没有注意到那部分。那是我在摆弄的东西。忘记我在那里做什么了。 - James Johnson
@Jon Skeet:我想应该没问题了...还没有测试过。但这应该是可以工作的,对吧? - James Johnson
这要看我们最初如何获得base64数据。问题在于OP没有提供任何相关信息... - Jon Skeet

1

另一个选择 - 可能是在使用 new XmlTextWriter(fullPath,Encoding.UTF8) 创建默认 Utf-8 流时添加 BOM;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接