Strope字符编码问题

发布于 2025-01-03 08:03:27 字数 1188 浏览 0 评论 0原文

我正在开发 XMPP 客户端,并且遇到 Strope (javascript 版本)发送/接收消息的问题。

问题是包含“特殊”字符的消息。例如,如果我发送:

我在这里。

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

我在这里。

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

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

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

<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>

提前感谢您的帮助。

编辑:

出站,似乎 Strope 是双重编码。当我打字时

我是

正在发送

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

入站,它似乎没有正确处理 CDATA。任何指导或想法表示赞赏。

I am working on an XMPP client and having an issue with messages being sent/received by Strophe (javascript version).

The issue is messages that contain "special" characters. For instance, if I send:

I'm here.

An external client (i.e. iChat) will display

I&apos;m here.

A strophe client doesn't display anything at all.

If I send that same message from iChat to the strophe client, it displays properly.

Here is the most basic sample code I could come up with:

<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>

Thanks in advance for any help.

Edit:

Outbound, it seems Strophe is double encoding. When I type

I'm

it is sending

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

Inbound, it appears to not be handling CDATA properly. Any guidance or ideas are appreciated.

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

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

发布评论

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

评论(1

捶死心动 2025-01-10 08:03:27

好的,基于

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

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

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

//text = Strophe.xmlescape(text);

Ok, based on

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

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

you should remove escaping of the text node. Open non-minimized version of strophe.js file and comment line #846

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