写了个 JS 字符串转 GBK 极简版本,不到 1KB

2022-08-02 20:01:04 +08:00
 iqoo

JS 里 GBK 编码转字符串是非常简单的,直接调用 TextDecoder 就可以。

但反过来,字符串转 GBK 编码却没这么简单,因为 TextEncoder 无法指定字集,只能将字符串转成 UTF-8 编码的二进制数据。

所以一般都用第三方库编码,比如 iconv 。但这种库通常很大,用在浏览器端不合适。

于是写了个极简版的 JS 字符串转 GBK 的轮子,几十行代码,压缩后几百字节,并且性能很高。

github.com/EtherDream/str2gbk

第一次调用时通过暴力穷举的方式,找出所有 GBK 对应的 JS 字符,存在映射表里,初始化过程需 1ms~2ms ;之后编码就是查表,非常快。

由于平时 GBK 用得不多,不知是否有忽略遗漏的地方。

2187 次点击
所在节点    分享创造
6 条回复
xieqiqiang00
2022-08-03 08:56:44 +08:00
感觉是造轮子
f056917
2022-08-03 09:48:40 +08:00
已 start
iqoo
2022-08-03 10:14:35 +08:00
@xieqiqiang00 找了一遍找不到类似的精简版本,花两小时造了个
zhuweiyou
2022-08-03 13:34:14 +08:00
iconv-lite 不行?
iqoo
2022-08-03 14:13:53 +08:00
@zhuweiyou 几百 KB
zhuweiyou
2022-08-04 10:03:42 +08:00
@iqoo 首先在浏览器端处理编码的场景几乎为 0, 其次后端处理编码不需要考虑体积问题. 所以你说的几百 KB 不成问题.

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

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

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

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

© 2021 V2EX