GBK编码/解码字符集

时间:2014-04-17 20:52:57

标签: javascript character-encoding gbk

我从服务器收到二进制数据包,其中包含以下内容:

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.

有人知道进行反向操作的方法吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

解决。

我使用垫片: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);