Открытая XML-кодировка - PullRequest
1 голос
/ 30 января 2012

Я использую Open XML SDK для чтения и записи информации в пользовательские части XML в документе Word. Я сериализирую структуру xml в класс, модифицирую данные и сериализую их обратно в документ.

Пример кода

DocumentFormat.OpenXml.Packaging.CustomXmlPart myPart = GetCustomXmlPart(mainPart, AITNamespaces.SiteDataNameSpace);
StreamReader myStrR = new System.IO.StreamReader(myPart.GetStream());
string myXML = myStrR.ReadToEnd();
sitedata = ObjectXMLSerializer<WDSiteData>.LoadString(myXML);

Site selSite = _applicationService.GetApplicationData().Sites.Find(item => item.Id == siteId);

sitedata.SiteId= selSite.Id;
sitedata.SiteName = "ööööaaaaaåååå"; // selSite.SiteName;

myXML = ObjectXMLSerializer<WDSiteData>.GetXMLString(sitedata);
myPart = GetCustomXmlPart(wordProcDocument.MainDocumentPart, AITNamespaces.SiteDataNameSpace);
using (StreamWriter sw = new StreamWriter(myPart.GetStream(FileMode.Create)))
{
    sw.Write(myXML);
}

Моя проблема заключается в том, что национальные символы закодированы, а текст "ööööaaaaaåååå" отображается в текстовом документе как "???????? aaaaa ????????"

Фактическое кодирование выполнено

myXML = ObjectXMLSerializer<WDSiteData>.GetXMLString(sitedata);

Любой знает, как поступить с национальными символами таким образом.

1 Ответ

2 голосов
/ 07 февраля 2012

Для кого это касается, моя проблема была в том, что в моем сериализаторе кодировка была исправлена ​​

return ASCIIEncoding.ASCII.GetString(memStream.ToArray());

Когда я изменил на

return ASCIIEncoding.UTF8.GetString(memStream.ToArray());

все хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...