V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
iqoo
V2EX  ›  分享创造

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

  •  3
     
  •   iqoo · 2022-08-02 20:01:04 +08:00 · 2196 次点击
    这是一个创建于 848 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    github.com/EtherDream/str2gbk

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

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

    6 条回复    2022-08-04 10:03:42 +08:00
    xieqiqiang00
        1
    xieqiqiang00  
       2022-08-03 08:56:44 +08:00 via Android
    感觉是造轮子
    f056917
        2
    f056917  
       2022-08-03 09:48:40 +08:00
    已 start
    iqoo
        3
    iqoo  
    OP
       2022-08-03 10:14:35 +08:00
    @xieqiqiang00 找了一遍找不到类似的精简版本,花两小时造了个
    zhuweiyou
        4
    zhuweiyou  
       2022-08-03 13:34:14 +08:00
    iconv-lite 不行?
    iqoo
        5
    iqoo  
    OP
       2022-08-03 14:13:53 +08:00
    @zhuweiyou 几百 KB
    zhuweiyou
        6
    zhuweiyou  
       2022-08-04 10:03:42 +08:00
    @iqoo 首先在浏览器端处理编码的场景几乎为 0, 其次后端处理编码不需要考虑体积问题. 所以你说的几百 KB 不成问题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:15 · PVG 21:15 · LAX 05:15 · JFK 08:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.