我正在从服务器接收包含以下内容的二进制数据包:

var data = new Uint8Array([0xB2, 0xE2, 0xCA, 0xD4, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32, 0x33]);

我知道这是一个GBK字符集,我正在使用TextDecoder/TextEncoder API读回它:

var str = TextDecoder('gbk').decode(data);// result: 测试test123

现在,问题是:如何做到相反?

我测试了:

var data = TextEncoder().encode(str);// but it doesn't match

一些手动压缩:

(str.charCodeAt(0) & 0xff) | ((str.charCodeAt(1) >>> 8) & 0xff)// but yeah, not need to be pro to know it can't works.

有人知道进行反向操作的方法吗?
先感谢您。

最佳答案

解决了。

我使用了垫片:https://github.com/inexorabletash/text-encoding
并注释了TextEncoder构造函数中的条件部分,以允许其他字符集。

if (this._encoding === null /*|| (this._encoding.name !== 'utf-8' && this._encoding.name !== 'utf-16le' && this._encoding.name !== 'utf-16be')*/) throw new TypeError('Unknown encoding: ' + opt_encoding);

关于javascript - GBK编码/解码字符集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23143231/

10-09 19:51