2012-02-05 17 views
7

Sto lavorando su un client XMPP e ho un problema con i messaggi inviati/ricevuti da Strophe (versione javascript).Problema di codifica dei caratteri di Strophe

Il problema sono messaggi contenenti caratteri "speciali". Per esempio, se invio:

Sono qui.

Un client esterno (vale a dire iChat) mostrerà

I & ampapos; sono qui.

Un client di tipo strophe non visualizza nulla.

Se invio lo stesso messaggio da iChat al client della strophe, viene visualizzato correttamente.

Ecco il codice di esempio di base più ho potuto venire con:

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

Grazie in anticipo per qualsiasi aiuto.

Edit:

in uscita, sembra Strophe è doppia codifica. Quando digito

Sono

che sta inviando

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

in entrata, sembra non essere la manipolazione CDATA correttamente. Qualsiasi consiglio o idea è apprezzata.

+0

Siete in grado di guardare i dati inviati dal js e verificare se questa conversione viene effettuata dai strophe.js o sul lato server? – Cheery

+0

Sto scavando in questo momento ... aggiornerà la domanda – jopke

+0

Una "idea": Ricorda che ''' non è valido quando il messaggio passa da XML a HTML - è solo un'entità valida in XML (al contrario per ''') - che è probabilmente il motivo per cui alcuni client basati su HTML non lo visualizzeranno affatto. – JimmiTh

risposta