2012-02-05 42 views
7

Tôi đang làm việc trên máy khách XMPP và gặp vấn đề với các tin nhắn được gửi/nhận bởi Strophe (phiên bản javascript).Vấn đề mã hóa ký tự Strophe

Sự cố là thư chứa ký tự "đặc biệt". Ví dụ: nếu tôi gửi:

Tôi ở đây.

Một khách hàng bên ngoài (ví dụ: iChat) sẽ hiển thị

I & ampapos; m ở đây.

Ứng dụng khách vuốt ve không hiển thị gì cả.

Nếu tôi gửi cùng một thông điệp đó từ iChat cho ứng dụng khách vuốt ve, nó sẽ hiển thị chính xác.

Dưới đây là hầu hết các mẫu mã cơ bản tôi có thể đưa ra:

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

Cảm ơn trước sự giúp đỡ nào.

Chỉnh sửa:

Ngoài, có vẻ như Strophe là mã hóa kép. Khi tôi gõ

Tôi

nó được gửi

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

Inbound, nó dường như không được xử lý đúng cách CDATA. Bất kỳ hướng dẫn hoặc ý tưởng nào được đánh giá cao.

+0

Bạn có thể nhìn vào các dữ liệu được gửi bởi js và kiểm tra xem chuyển đổi này được thực hiện bởi strophe.js hoặc ở phía máy chủ? – Cheery

+0

Tôi đang đào sâu vào đó ngay bây giờ ... sẽ cập nhật câu hỏi – jopke

+0

Một "ý tưởng": Hãy nhớ rằng '' 'không hợp lệ khi thư đi từ XML sang HTML - nó chỉ là thực thể hợp lệ trong XML (trái ngược với vào '' ') - đó có thể là lý do tại sao một số ứng dụng khách dựa trên HTML sẽ không hiển thị nó. – JimmiTh

Trả lời

Các vấn đề liên quan