Val*_*dis 99
终端使用环境变量来确定要使用的字符集,因此您可以通过查看这些变量来确定它:
echo $LC_CTYPE
Run Code Online (Sandbox Code Playgroud)
要么
echo $LANG
Run Code Online (Sandbox Code Playgroud)
nyz*_*yzm 90
locale 没有参数的命令将打印除LANGUAGE之外的所有相关环境变量的值.
对于当前编码:
locale charmap
Run Code Online (Sandbox Code Playgroud)
对于可用的区域设置:
locale -a
Run Code Online (Sandbox Code Playgroud)
对于可用的编码:
locale -m
Run Code Online (Sandbox Code Playgroud)
小智 43
检查编码和语言:
$ echo $LC_CTYPE
ISO-8859-1
$ echo $LANG
pt_BR
Run Code Online (Sandbox Code Playgroud)
获取所有语言:
$ locale -a
Run Code Online (Sandbox Code Playgroud)
更改为pt_PT.utf8:
$ export LC_ALL=pt_PT.utf8
$ export LANG="$LC_ALL"
Run Code Online (Sandbox Code Playgroud)
Mar*_*oma 11
如果你有Python:
python -c "import sys; print(sys.stdout.encoding)"
Run Code Online (Sandbox Code Playgroud)
据我所知,不。
从间接指征$LC_CTYPE,locale并且这样的似乎诱人的,但这些都完全从编码终端应用程序(实际上是一个仿真器)分离发生在屏幕上显示字符时要使用。
他们唯一确定检测编码的方法是输出仅存在于编码中的内容,例如ä拍摄屏幕快照,分析该图像并检查输出字符是否正确。
因此,不幸的是,这是不可能的。
要查看当前区域设置信息,请使用locale命令。以下是 RHEL 7.8 上的示例
[usr@host ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)