2

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

一切正常,直到我发送那些特殊字符,例如:ă Ț î ș ê ñ ü 所以这就是问题所在。客户端 1 使用其中一个字符向服务器发送一条消息。服务器打印消息,然后将消息发送给客户端 2。

客户端 2 收到消息并在浏览器 html 页面上打印消息,效果很好 字符显示正确。

问题是当我想在服务器站点上打印字符串时。而不是ă向我显示? 字符。这给我带来了问题,因为我想在数据库中插入文本(mysql-启用了 ut8 编码)

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

谢谢

4

2 回答 2

1

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

然后检查您已将字节转换为字符串(或相反)的所有位置。出错的常见地方包括在没有指定编码的情况下调用getBytes()a 。String其他缺陷包括未在数据库连接字符串中设置编码。

于 2012-06-16T13:22:24.427 回答
1

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

function toHtmlEncoded(string){
    return string.replace(/[\u0080-\uC350]/g, 
                      function(a) {return '&#'+a.charCodeAt(0)+';';}
           );
}
于 2012-06-16T13:11:05.390 回答