我正在开发一个XMPP客户端,使用Strophe(JavaScript版本)发送/接收消息时遇到问题。
问题出在包含“特殊”字符的消息上。例如,如果我发送以下消息:
如果我从iChat向Strophe客户端发送同样的消息,则会正确显示。
以下是我能想到的最基本的示例代码:
感谢您的帮助。
编辑:
出站时,似乎Strophe正在进行双重编码。当我输入“我是”时,
它发送的是
问题出在包含“特殊”字符的消息上。例如,如果我发送以下消息:
外部客户端(如iChat)将显示:I'm here.
而Strophe客户端则根本不显示任何内容。I&aposm here.
如果我从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&apos;m</body>
在输入方面,似乎不能正确处理 CDATA。欢迎提供任何指导或想法。
'
是无效的 - 它只是XML中有效的实体(与'
相反) - 这可能是为什么一些基于HTML的客户端根本不显示它的原因。 - JimmiTh函数:xmlescape 转义无效的xml字符。
非最小化版本的js文件的第822行。 - Cheery