Strophe字符编码问题

Strophe character encoding issue

本文关键字:问题 编码 字符 Strophe      更新时间:2023-09-26

我正在处理XMPP客户端,Strophe(javascript版本)发送/接收消息时遇到问题。

问题在于包含"特殊"字符的消息。例如,如果我发送:

我在这里。

外部客户端(即iChat)将显示

我&ampapos;我在这儿。

灾难客户端根本不显示任何内容。

如果我从iChat向strophe客户端发送相同的消息,它会正确显示。

以下是我能想到的最基本的示例代码:

<html>
<head>
  <script type='text/javascript' src='strophe.min.js'></script>
  <script type='text/javascript'>
    function onConnect(status) {
        if (status == Strophe.Status.CONNECTED) {
            var message = $msg({to: CONTACT_JID, from: JID, type: 'chat'}).c('body').t("I'm here."); ;
            connection.send(message.tree());
        }
    }
    var connection = new Strophe.Connection('http://bosh.metajack.im:5280/xmpp-httpbind');
    connection.connect(JID, PASS, onConnect);
  </script>
</head>
<body></body>
</html>

提前感谢您的帮助。

编辑:

出站时,似乎Strophe是双重编码。当我键入时

我是

它正在发送

<body>I&amp;apos;m</body>

入站时,它似乎没有正确处理CDATA。欢迎提供任何指导或想法。

好的,基于

https://github.com/metajack/strophejs/issues/54

https://github.com/metajack/strophejs/pull/59

您应该删除文本节点的转义。打开非最小化版本的strophe.js文件和注释行#846

//text = Strophe.xmlescape(text);