js string to hex 有哪些需要注意的地方?

2020-12-23 12:08:36 +08:00
 youla

用 c#写了一个感觉挺简单,毕竟封装得很无脑了。

js 写的话完全没头绪...(好吧,其实就是懒)

因为接收到的数据 arrayBuffer

var ws = new WebSocket("ws://localhost:8899");
ws.binaryType = "arraybuffer";
……
ws.send("看到这行字的人,鸡鸡缩短 10cm");
……
ws.onmessage = (e) =>{
    var blob = new Blob([new Uint8Array(e.data)]);
    var reader = new FileReader();
    reader.onload = (evt) => {
        console.log(reader.result);
    };
    reader.readAsText(blob, "GB2312");
}

//这样转字符串不会乱码

现在纠结是 arrayBuffer to hex ?? blob to hex ?? string to hex ??

找到的 js string to hex function 基本都是英文没什么问题,但是中文我将收获一段乱码?

怎么转才不会出现乱码呢?

stackoverflow 都翻遍了,jsdelivr 也翻遍了,鱼也摸过了。

1485 次点击
所在节点    程序员
8 条回复
KuroNekoFan
2020-12-23 13:36:52 +08:00
js 的 string to hex 只要 Number(`$hexString`)就可以了...
KuroNekoFan
2020-12-23 13:37:25 +08:00
看错问题,忽略...
dulife
2020-12-23 13:47:15 +08:00
不慌,缩短 10cm 还剩 30cm
GTim
2020-12-23 13:49:28 +08:00
问题的关键在于你的编码,你后端返回的是 `gb2312`

你可以尝试使用 `TextEncode` 和 `TextDecode` 试一试
youla
2020-12-23 13:58:04 +08:00
@GTim 这个不是原生就有的吧。
youla
2020-12-23 14:14:20 +08:00
@GTim 解决了,谢谢,不知道为什么之前没找到这个方法,我还以为要引用什么 library
seki
2020-12-23 14:30:30 +08:00
如果不用兼容 ie 可以考虑用这个
GTim
2020-12-23 14:48:16 +08:00
@seki 都原生 websocket 了,这个方法肯定能用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX