【问题标题】:Open xml encoding打开xml编码
【发布时间】:2012-01-30 14:48:08
【问题描述】:

我正在使用 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);

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

【问题讨论】:

    标签: ms-word openxml openxml-sdk


    【解决方案1】:

    对于谁来说,我的问题是在我的序列化器中编码是固定的

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

    当我改成

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

    一切都好。

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 2017-10-20
      • 2017-03-09
      • 1970-01-01
      • 2011-01-27
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多