Декодирование из 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, который не вставляет спецификацию в поток.