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

Unix/Bash命令行(不使用sed)如何将URL ASCII编码转成UTF-8字符?

解决HTML实体转UTF-8字符的简洁命令行方案

如果你不想写繁琐的sed正则来处理{这类十进制HTML实体,下面几个管道友好的方案能帮你快速搞定,都是用现成的工具,不用自己造轮子:

1. Perl 一行命令(推荐,大部分系统默认支持)

Perl的HTML::Entities模块是核心库,几乎所有类Unix系统都预装了,它能自动识别并解码所有HTML实体(包括十进制、十六进制以及命名实体)。

用法直接管道就行:

curl your-target-url | perl -MHTML::Entities -pe 'decode_entities($_)'

比如你的输入:

GET v2.12/...?fields={fieldname_of_type_Tab} HTTP/1.1

经过这个命令处理后,就会输出:

GET v2.12/...?fields={fieldname_of_type_Tab} HTTP/1.1

2. Python 一行命令(跨平台友好)

Python3的标准库html模块自带unescape函数,同样能处理各种HTML实体,适合没有Perl或者更熟悉Python的场景:

curl your-target-url | python3 -c "import sys, html; print(html.unescape(sys.stdin.read()), end='')"

end=''是为了避免额外多输出一个换行符,保持和原输入一致的格式。

3. recode 工具(极简但可能需要安装)

如果你的系统能安装额外工具,recode是更简洁的选择,它专门做字符编码转换,支持HTML实体转UTF-8:

首先安装(以Debian/Ubuntu为例):

sudo apt install recode

然后使用管道:

curl your-target-url | recode html..utf8

为什么这些方案比sed好?

sed需要手动写正则匹配&#(\d+);,然后通过复杂的替换逻辑把数字转换成对应字符,不仅要处理十进制,还要考虑十六进制实体(比如{),代码冗长且容易漏情况。而上面的工具都是专门为处理HTML实体设计的,能覆盖所有合法的HTML实体格式,省心又可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:24