打开xml编码

发布于 2025-01-01 02:03:06 字数 1088 浏览 0 评论 0原文

我使用 Open XML SDK 在 Word 文档中的自定义 xml 部分中读取和写入信息。 我将 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ååååå”在word文档中显示为“?????????aaaaa?????????”

实际编码已完成

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

任何人都知道如何以这种方式处理国家字符。

Im using Open XML SDK to read and write information to custom xml parts in a Word document.
Im serializing a xml structure into a class , modifying the data and serializing it back into the document.

Example code

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);
}

My problem is that the national characters become encoded and the text "ööööaaaaaåååå" is displayed in the word document as "????????aaaaa????????"

The actual encoding is done

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

Anyone has a clue on how to go about handling national characters this way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独享拥抱 2025-01-08 02:03:06

对于它所关心的人来说,我的麻烦是,在我的序列化器中,编码是固定的,

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

当我更改为

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

一切都很好时。

For whom it concerns , my trouble was that in my serializer the encoding was fixed

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

When i changed to

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

all is well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文