爱意满满的作品展示区。
iqoo

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

  •  3
     
  •   iqoo · Aug 2, 2022 · 2676 views
    This topic created in 1399 days ago, the information mentioned may be changed or developed.

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

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

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

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

    github.com/EtherDream/str2gbk

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

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

    6 replies    2022-08-04 10:03:42 +08:00
    xieqiqiang00
        1
    xieqiqiang00  
       Aug 3, 2022 via Android
    感觉是造轮子
    p8YFk4f3E8SJ3aEv
        2
    p8YFk4f3E8SJ3aEv  
       Aug 3, 2022
    已 start
    iqoo
        3
    iqoo  
    OP
       Aug 3, 2022
    @xieqiqiang00 找了一遍找不到类似的精简版本,花两小时造了个
    zhuweiyou
        4
    zhuweiyou  
       Aug 3, 2022
    iconv-lite 不行?
    iqoo
        5
    iqoo  
    OP
       Aug 3, 2022
    @zhuweiyou 几百 KB
    zhuweiyou
        6
    zhuweiyou  
       Aug 4, 2022
    @iqoo 首先在浏览器端处理编码的场景几乎为 0, 其次后端处理编码不需要考虑体积问题. 所以你说的几百 KB 不成问题.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3245 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 5414617a · 37ms · UTC 14:01 · PVG 22:01 · LAX 07:01 · JFK 10:01
    ♥ Do have faith in what you're doing.