如何检查Python脚本已生成的字符串的Linux Shell编码

Eug*_*ene 5 python linux string shell encoding

我运行一个Python脚本,该脚本生成一个字符串,然后使用该字符串执行Shell脚本。我想使用linux shell检查该字符串的编码,但不将该字符串写入文件中(磁盘操作运行缓慢)。是否可以仅使用RAM检查Linux(Ubuntu)中的字符串编码?就像是:

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

Python检查编码脚本也很慢。

ndp*_*dpu 7

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

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

:~  $ echo "????" | file -i -
/dev/stdin: text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

使用管道到 sed:

:~  $ echo "????" | file -i - | sed 's/.*charset=\(.*\)/\1/'
utf-8
Run Code Online (Sandbox Code Playgroud)

或 awk(当然你可以混合使用):

:~  $ echo "????" | file -i - | awk '{ print $3 }'
charset=utf-8
Run Code Online (Sandbox Code Playgroud)

你也可以使用 python chardet模块。Chardet 带有一个命令行脚本,用于报告一个或多个文件的编码。只需安装它:

pip install chardet
Run Code Online (Sandbox Code Playgroud)

并与来自 echo 的管道一起使用:

:~  $ echo "????" | chardetect
<stdin>: utf-8 with confidence 0.938125
Run Code Online (Sandbox Code Playgroud)