zzf971129 发表于 2022-5-21 11:15

js websocket请教

js中websocke模拟发送消息,数据包里面有个特殊字符“Y”发过去不知道是编码问题还是啥问题,一直出现下面这种情况,十六进制都变了(纯小白{:1_918:},勿喷,因为有需求。临时接触的js websocket)







ryosga 发表于 2022-5-21 15:49

进行编码转换了, websocket发送的数据是utf8编码的

zzf971129 发表于 2022-5-21 17:00

ryosga 发表于 2022-5-21 15:49
进行编码转换了, websocket发送的数据是utf8编码的

嘿嘿嘿,那老哥怎么解决,用最简单的办法,能把这个特殊字符原模原样发过去就好。{:1_893:}

unmask 发表于 2022-5-21 19:23

将你的html中的charset修改成<meta charset="UTF-8">,同时html文件及js文件都保存为utf8格式的,你再试试

zzf971129 发表于 2022-5-21 20:52

unmask 发表于 2022-5-21 19:23
将你的html中的charset修改成,同时html文件及js文件都保存为utf8格式的,你再试试

我仔细看了下 原本的就这个html文件 没啥问题都是utf8

unmask 发表于 2022-5-21 21:28

zzf971129 发表于 2022-5-21 20:52
我仔细看了下 原本的就这个html文件 没啥问题都是utf8

传送的c3d9是正确的,接受后再用utf8解码就Ok的

zzf971129 发表于 2022-5-22 08:35

unmask 发表于 2022-5-21 21:28
传送的c3d9是正确的,接受后再用utf8解码就Ok的

我明白你的意思,不过你看,下面是原数据包,其实这个DD01根据发送内容的字节长度变化(箭头哪里),算法暂不明确,不过暂且不用管,就是它是直接把Y(十六进制DD)发过来的,我这边用js在发送的时候能不能让它直接发送过来

unmask 发表于 2022-5-22 08:54

zzf971129 发表于 2022-5-22 08:35
我明白你的意思,不过你看,下面是原数据包,其实这个DD01根据发送内容的字节长度变化(箭头哪里),算法 ...

看你的调试hex,RC中就是dd01,也就是直接将Y的windows1252编码发送出来了,你的服务端用utf8来解析dd,无法解析就抛弃掉了吧,所以再转发给其他client时就没有Y了

zzf971129 发表于 2022-5-22 09:35

unmask 发表于 2022-5-22 08:54
看你的调试hex,RC中就是dd01,也就是直接将Y的windows1252编码发送出来了,你的服务端用utf8来解析dd, ...

嘿嘿 ,大致流程差不多,我这边其实什么也不用做,只要把原数据除了某些变量,其他原模原样发给服务端就行,就是发送的时候用windows1252编码感觉应该就行,关键是webSocket.send()发送的时候怎么让它用windows1252编码,百度也搜不到太清楚的答案。
页: [1]
查看完整版本: js websocket请教