Декодирование из Base64 в С#

Я создал документ 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 Encoder

Декодер не смог разобрать 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 для решения проблемы? Я использую encoder base64 для кодирования XML файла. Я запрашиваю документ. требуется использовать кодировщик base64. Я расшифровал себя, чтобы проверить, где проблема. Декодер - это Java. Они не могут разобрать XML файл, который я считаю, потому что < перед документом.

Ответ 1

Это зависит от того, как вы его кодируете, но вы должны использовать UTF-8, поскольку документ объявлен как таковой. Вот примеры для кодирования и декодирования:

См. Jon Skeet здесь:
С# 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));
}

Ответ 2

Еще одна опция - может быть спецификацией по умолчанию для потока Utf-8, созданного новым XmlTextWriter (fullPath, Encoding.UTF8);

Рассмотрим использование второго конструктора для UTF8 - http://msdn.microsoft.com/en-us/library/s064f8w2.aspx, который не вставляет спецификацию в поток.