JS 里 GBK 编码转字符串是非常简单的,直接调用 TextDecoder 就可以。
但反过来,字符串转 GBK 编码却没这么简单,因为 TextEncoder 无法指定字集,只能将字符串转成 UTF-8 编码的二进制数据。
所以一般都用第三方库编码,比如 iconv 。但这种库通常很大,用在浏览器端不合适。
于是写了个极简版的 JS 字符串转 GBK 的轮子,几十行代码,压缩后几百字节,并且性能很高。
第一次调用时通过暴力穷举的方式,找出所有 GBK 对应的 JS 字符,存在映射表里,初始化过程需 1ms~2ms ;之后编码就是查表,非常快。
由于平时 GBK 用得不多,不知是否有忽略遗漏的地方。