【问题标题】:Why are my line break tags not resolving?为什么我的换行标签没有解析?
【发布时间】:2019-03-04 16:12:46
【问题描述】:

我正在使用从文档中获取文本

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>

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

"&square;&square;在“默认网站”下你"

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

“��在“默认网站”下你”

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

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

这是因为 rFonts 属性 w:asciiTheme="minorHAnsi" 和 w:hAnsiTheme="minorHAnsi" 吗?

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

【问题讨论】:

    标签: office-js word-addins


    【解决方案1】:

    Word 的“换行符”字符是 ANSI 11。很可能,服务器上的接收者不知道如何处理这个字符,正在尽其所能地解释它,并将带有字符 Word 的字符串返回给 Word,反过来,无法正确解释。

    最好的办法是在发送字符串时用一些东西替换这个元素,并在字符串返回时用 ANSI 11 替换它。

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      相关资源
      最近更新 更多