我有一点问题。我正在基于jetty websockets实现在java中构建一个小型服务器。 客户端是浏览器,我使用websockets javascript api发送信息。
一切都很有效,直到我发送这些特殊字符,例如:ăŢîêñüü 所以这就是问题所在。客户端1使用其中一个字符向服务器发送消息。服务器打印邮件,然后将邮件发送到客户端2。
客户端2接收消息并在浏览器html页面上打印消息并且工作正常。字符显示正确。
问题是当我想在服务器站点上打印字符串时。而不是ă会显示?字符。这引起了我的问题,因为我想将文本插入数据库(启用了ut8编码的mysql)
那么......似乎有什么问题。从浏览器发送的文本不是UT8编码的?或者jetty websocket实现没有在utf8编码中接收字符串??
由于
答案 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
而不指定编码。其他陷阱包括不在数据库连接字符串中设置编码。