注意:对于支持问题,请使用以下渠道之一: stackoverflow或slack
当将对象作为数据发出并在其中使用≥
字符串(或 unicode \u2265
)时,它会将其转换为字符串字母e
和≤
变成d
客户端
channel.emit('data', {data:'≥'});
服务器端
socket.on('data',({data:bla})=>{
console.log(bla); // prints 'e'
});
注意:获得快速答案的最佳方法是提供一个失败的测试用例,例如通过分叉以下小提琴。
数据将始终保持不变
仅当套接字未通过 xhr 升级(首次使用)时才会发生这种情况,
升级到 websocket 后,所有数据都正确发送
见 #451 和 #572
1.x 版的 utf8 解析有问题,你可以试试 2.x 版吗?
有关的:
用 2.0.4 试过了,还是会发生...
通过使用以下代码对数据进行编码和解码来修复它:
客户端
function strencode( data ) {
return encodeURIComponent( escape( JSON.stringify( data ) ) );
}
服务器端
function strdecode( data ) {
return JSON.parse( unescape( decodeURIComponent( data ) ) );
}
是的,这似乎奏效了。 谢谢!
最有用的评论
用 2.0.4 试过了,还是会发生...
通过使用以下代码对数据进行编码和解码来修复它:
客户端
服务器端