2012-02-05 20 views
7

Estoy trabajando en un cliente XMPP y tengo un problema con los mensajes enviados/recibidos por Strophe (versión de JavaScript).Cuestión de codificación de caracteres Strophe

El problema es que los mensajes contienen caracteres "especiales". Por ejemplo, si envío:

Estoy aquí.

Un cliente externo (es decir iChat) mostrará

I & ampapos; M aquí.

Un cliente de strophe no muestra nada en absoluto.

Si envío el mismo mensaje de iChat al cliente de strophe, se muestra correctamente.

Aquí es el código de ejemplo más básico que podía llegar a:

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

Gracias de antemano por cualquier ayuda.

Editar:

de salida, parece Strophe es doble codificación. Cuando escribo

estoy

que está enviando

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

entrante, parece no estar manejando CDATA correctamente. Cualquier orientación o ideas son apreciadas.

+0

¿Eres capaz de mirar a los datos enviados por JS y comprobar si esta conversión se realiza mediante los strophe.js o en el lado del servidor? – Cheery

+0

Estoy cavando en eso ahora ... actualizará la pregunta – jopke

+0

Una "idea": Recuerde que ''' no es válido cuando el mensaje va de XML a HTML - es solo una entidad válida en XML (en oposición a '''): es probable que algunos clientes basados ​​en HTML no lo muestren. – JimmiTh

Respuesta

Cuestiones relacionadas