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

如何使用jq将Unicode字节序列转换为可正常显示的emoji字符

解决方案

问题根因

Facebook导出的Messenger JSON文件中,emoji被存储为UTF-8字节对应的\u00xx格式单字节转义序列,jq默认将这类转义解析为ISO-8859-1(Latin1)编码的单个字符,不会自动合并为UTF-8多字节字符,因此直接输出会出现乱码。

解决方法

你可以通过iconv转码配合jq输出,或者直接在jq内完成编码转换,两种方案都可以实现正常输出emoji:

方案1:配合iconv转码(兼容性最好)

直接在jq命令后追加iconv编码转换步骤,将jq默认输出的Latin1字符转为UTF-8:

echo '{"content":"\u00f0\u009f\u00a4\u00b7\u00f0\u009f\u008f\u00bf\u00e2\u0080\u008d\u00e2\u0099\u0082\u00ef\u00b8\u008f"}' | jq -c '.' | iconv -f latin1 -t utf-8

输出结果:

{"content":"🤷🏿‍♂️"}

方案2:纯jq内部实现转换(无需额外依赖)

如果使用jq 1.5及以上版本,可以直接通过内置函数完成字节转UTF-8的操作:

echo '{"content":"\u00f0\u009f\u00a4\u00b7\u00f0\u009f\u008f\u00bf\u00e2\u0080\u008d\u00e2\u0099\u0082\u00ef\u00b8\u008f"}' | jq -c '.content |= (map(ord) | implode)'

内容的提问来源于stack exchange,提问作者Dan Dascalescu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:06:01