寻找可替代Python脚本实现Unicode转义的标准Unix工具(适配macOS)
寻找可替代Python脚本实现Unicode转义的标准Unix工具(适配macOS)
我完全懂你不想为这么个单一功能专门跑个Python脚本的心情!刚好有几个适配macOS的工具能搞定这个需求,有的还是系统预装的,不用额外折腾安装,下面给你详细说:
1. 系统预装的Perl(最省心,零额外安装)
macOS默认就自带Perl,直接就能用它实现和你Python脚本完全一致的效果。核心思路是用Perl的正则替换,把所有非ASCII字符转换成\uXXXX(或\UXXXXXXXX针对超出BMP的字符)的unicode转义格式,和Python的unicode-escape编码逻辑完全对齐。
你可以直接用这条命令:
perl -pe 's/([^\x00-\x7F])/ord($1) > 0xFFFF ? sprintf("\\U%08X", ord($1)) : sprintf("\\u%04X", ord($1))/ge'
用法示例:
比如你要处理一个文本文件,或者从标准输入读取内容:
# 直接处理输入文本 echo "Hello 世界 🌍" | perl -pe 's/([^\x00-\x7F])/ord($1) > 0xFFFF ? sprintf("\\U%08X", ord($1)) : sprintf("\\u%04X", ord($1))/ge' # 处理文件内容 perl -pe 's/([^\x00-\x7F])/ord($1) > 0xFFFF ? sprintf("\\U%08X", ord($1)) : sprintf("\\u%04X", ord($1))/ge' input.txt > output.txt
输出结果会是Hello \u4E16\u754C \U0001F30D,和你的Python脚本运行结果完全一致。
2. uconv(专业字符处理工具,需brew安装)
你之前试的uconv其实是可行的,只是没找对正确的参数。它是ICU(International Components for Unicode)工具集里的一员,功能非常强大,适合复杂的字符转换场景。
安装步骤:
首先用brew安装ICU工具集:
brew install icu4c
实现unicode转义的命令:
uconv -f utf-8 -t utf-8 -x 'escape(unicode)'
用法示例:
同样支持标准输入和文件处理:
echo "Hello 世界 🌍" | uconv -f utf-8 -t utf-8 -x 'escape(unicode)'
输出结果和Perl、Python脚本的效果完全一致,也是Hello \u4E16\u754C \U0001F30D。
选择建议
- 如果只是临时用或者不想装额外工具,Perl绝对是首选,系统自带不用折腾;
- 如果你经常需要处理各种字符编码转换,或者想要更专业的工具,uconv会是更好的长期选择,它的功能覆盖了几乎所有字符处理场景。
对你嵌入Elm应用到Web Worker的场景来说,这两个工具输出的转义文本都能完美满足需求,直接替换你的Python脚本就行~
备注:内容来源于stack exchange,提问作者Jachin
相关产品推荐
相关产品推荐

