我正在从服务器接收包含以下内容的二进制数据包: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/