jetty,websockets和UTF8编码

时间:2012-06-16 11:11:18

标签: java javascript jetty websocket embedded-jetty

我有一点问题。我正在基于jetty websockets实现在java中构建一个小型服务器。 客户端是浏览器,我使用websockets javascript api发送信息。

一切都很有效,直到我发送这些特殊字符,例如:ăŢîêñüü 所以这就是问题所在。客户端1使用其中一个字符向服务器发送消息。服务器打印邮件,然后将邮件发送到客户端2。

客户端2接收消息并在浏览器html页面上打印消息并且工作正常。字符显示正确。

问题是当我想在服务器站点上打印字符串时。而不是ă会显示字符。这引起了我的问题,因为我想将文本插入数据库(启用了ut8编码的mysql)

那么......似乎有什么问题。从浏览器发送的文本不是UT8编码的?或者jetty websocket实现没有在utf8编码中接收字符串??

由于

2 个答案:

答案 0 :(得分:1)

这是我用来对字符串中的所有特殊字符进行HTML编码的函数(但不是html本身(如<>))。如果在将字符串发送到服务器之前应用它,则每个人都应该看到相同的内容,并且可以将其存储在数据库表中:

function toHtmlEncoded(string){
    return string.replace(/[\u0080-\uC350]/g, 
                      function(a) {return '&#'+a.charCodeAt(0)+';';}
           );
}

答案 1 :(得分:1)

首先阅读此http://kunststube.net/encoding/

然后检查您将字节转换为字符串(或反向)的所有位置。出错的常见地方包括在getBytes()上调用String而不指定编码。其他陷阱包括不在数据库连接字符串中设置编码。