为什么我的换行标签无法解析?

时间:2019-03-04 16:12:46

标签: office-js word-addins

我正在从文档中使用

var doc = context.document;
var originalRange = doc.body;
originalRange.load("text");
return context.sync()
  .then(function () {
    // have some fun with the text
  }

然后我将文本作为UTF-8发送到服务器。但是运行中的换行符()无法解决。它们将以空的方形字符(□)发送,并以黑色菱形问号(�)返回。

<w:p w:rsidR="00A739D5" w:rsidRDefault="00A739D5" w:rsidP="00A739D5">
    <w:pPr>
        <w:rPr>
            <w:rFonts w:asciiTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cs="Calibri"/>
        </w:rPr>
    </w:pPr>
    <w:r>
        <w:rPr>
            <w:rFonts w:asciiTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cs="Calibri"/>
        </w:rPr>
        <w:br/>
    </w:r>
    <w:r>
        <w:rPr>
            <w:rFonts w:asciiTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cs="Calibri"/>
        </w:rPr>
        <w:br/>
        <w:t xml:space="preserve">Under "Default Web Site" you </w:t>
    </w:r>
</w:p>

当我查看正在发送的内容时,我看到了...

“□□在“默认网站”下”

当我查看返回的内容时,我看到了...

“在“默认网站”下,您”

搜索文本时,毫不奇怪,我得到0条结果。

searchResults = context.document.body.search(myText, { matchCase: true, ignorePunct: true, ignoreSpace:true});

这是由于rFonts属性w:asciiTheme =“ minorHAnsi”和w:hAnsiTheme =“ minorHAnsi”吗?

如果是,我该怎么做才能正确解析这些字符?我需要先确定文档中使用的样式,然后再转换范围内的文本,然后再发送到服务器吗?

1 个答案:

答案 0 :(得分:1)

Word的“新行”字符是ANSI11。很有可能,服务器上的接收者不知道如何处理此字符,正在尽最大可能对其进行解释,然后将字符串与单词Word一起返回给Word,从而无法正确解释。

最好是在发送字符串时用某些元素替换此元素,并在字符串返回ANSI 11时替换它。