You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python3计算emoji长度的结果与JavaScript保持一致

字符长度计算差异的核心原因

Python内置len()方法统计的是字符串包含的Unicode码点总数,而JavaScript的length属性统计的是字符串UTF-16编码的16位单元总数。
绝大多数emoji属于Unicode补充平面字符,单个emoji码点需要占用2个UTF-16编码单元;带肤色、表情组合符的多码点emoji,每个码点都对应2个UTF-16单元,因此会出现你遇到的长度计算差异。

Python对齐JS计算逻辑的实现方法

无需引入第三方依赖,直接通过原生编码转换即可实现完全对齐JS的长度统计,代码如下:

def get_js_aligned_length(input_str: str) -> int:
    # 采用UTF-16小端编码,避免BOM头干扰统计结果
    return len(input_str.encode('utf-16-le')) // 2

效果验证

  • 输入字符串'👀':调用方法返回值为2,与JS计算结果一致
  • 输入字符串'👍🏾':调用方法返回值为4,与JS计算结果一致

内容的提问来源于stack exchange,提问作者Jean DuPont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:36:03