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

如何正确使用xmlstarlet fo的--encode选项执行UTF-8编码?

解决xmlstarlet fo指定UTF-8编码时的错误问题

错误原因

你遇到的failed to load external entity "utf-8"错误,本质是xmlstarlet把utf-8当成了要加载的输入文件,而非--encode选项的参数。当通过管道传递输入时,若未明确告知工具从标准输入读取内容,它会自动将选项后的字符串识别为文件名,自然找不到名为"utf-8"的文件,从而触发报错。

正确实现UTF-8编码的命令写法

方式1:直接指定输入文件(无需管道)

xmlstarlet fo -H -R --encode utf-8 unformatted.html

方式2:使用管道并明确从标准输入读取

通过-符号指定工具从标准输入获取内容,避免把编码参数误判为文件名:

cat unformatted.html | xmlstarlet fo -H -R --encode utf-8 -

简化写法(用-e代替--encode)

xmlstarlet支持短选项-e作为--encode的简写,命令更简洁:

cat unformatted.html | xmlstarlet fo -H -R -e utf-8 -

验证编码是否生效

执行命令后,可以用file -i工具检查输出的编码格式,确认是否为UTF-8:

cat unformatted.html | xmlstarlet fo -H -R -e utf-8 - | file -i

正常输出会包含charset=utf-8的标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:15:41