如何在Linux shell中检查Python脚本生成的字符串编码

7

我运行了一个Python脚本,生成一个字符串,然后使用该字符串执行一个shell脚本。 我想要在Linux(Ubuntu)中检查该字符串的编码,但是不想将该字符串写入文件(磁盘操作会变慢)。 是否可能在Linux中使用RAM而不写入文件来检查一个字符串的编码? 类似于:

check-encoding '我的具有随机编码的字符串'

Python检查编码脚本也很慢。


“检查编码”是什么意思?您只是想知道字节是否是某种编码中的有效字符串吗?(对于除UTF-8以外的大多数编码,几乎任何字节字符串都是有效的字符串 - 它可能对人类来说没有任何有意义的含义,但您如何测试呢?) - abarnert
1个回答

10

尝试使用文件实用工具。您可以通过使用echo将任何字符串作为文件参数传递给带有-选项的实用程序,该选项会将管道传输到实用程序中(许多命令使用连字符(-)代替文件名作为参数,以指示输入应来自stdin而不是文件):

:~  $ echo "test" | file -i -
/dev/stdin: text/plain; charset=us-ascii

:~  $ echo "тест" | file -i -
/dev/stdin: text/plain; charset=utf-8

使用管道将数据传递给sed:

:~  $ echo "тест" | file -i - | sed 's/.*charset=\(.*\)/\1/'
utf-8

或者使用awk(当然你可以混合使用):
:~  $ echo "тест" | file -i - | awk '{ print $3 }'
charset=utf-8

同时,您也可以使用Python的chardet模块。Chardet提供了一个命令行脚本,可以报告一个或多个文件的编码格式。只需安装它:

pip install chardet

并使用管道从echo中:

:~  $ echo "тест" | chardetect
<stdin>: utf-8 with confidence 0.938125

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接