2012-02-05 2 views
7

Я работаю над клиентом XMPP и имею проблему с отправкой/получением сообщений Strophe (версия javascript).Проблема кодирования символов Strophe

Проблема - это сообщения, содержащие «специальные» символы. Например, если я пришлю:

Я здесь.

Внешний клиент (т.е. iChat) будет отображать

Я & ampapos; м здесь.

Клиент-строф ничего не отображает.

Если я отправил то же сообщение от iChat клиенту строфы, он отобразится правильно.

Вот самый основной образец кода я мог придумать:

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

Заранее спасибо за любую помощь.

Edit:

Outbound, кажется Строфа имеет двойную кодировку. Когда я типа

Я

он посылает

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

Inbound, это, кажется, не обработки CDATA правильно. Любые рекомендации или идеи приветствуются.

+0

возможность взглянуть на данные, отправляемые по JS и проверить, является ли это преобразование осуществляется с помощью strophe.js или на стороне сервера Вы? – Cheery

+0

Я сейчас копаюсь в этом ... будет обновлять вопрос – jopke

+0

Одна «идея»: помните, что ''' недействителен, когда сообщение отправляется из XML в HTML - это только допустимый объект в XML (в отличие от него на ''') - что, вероятно, почему некоторые клиенты на основе HTML не будут отображать его вообще. – JimmiTh

ответ