一、常用用法
1 | luit -encoding '编码方案' program [args] |
二、含义与选项
2.1、含义
由《终端模拟器中执行命令出现乱码问题解决》可知,在终端模拟器中执行命令,通信过程示意图如图1或者图2所示。
图1
图2
执行命令时,使用终端模拟器配置的编码方案,对原命令字符串进行编码,将得到的字节流传递给“命令执行单元” ;展现命令执行结果时,获取字节流形式的命令执行结果,使用终端模拟器配置的编码方案,对其进行解码,得到字符串形式的命令执行结果。
通过使用luit -encoding '编码方案' program [args]
命令,现在在终端模拟器中执行命令,通信过程示意图如图3或者图4所示。
图3
图4
此时执行命令时,使用终端模拟器配置的编码方案,对原命令字符串进行编码,得到字节流,再使用“UTF-8”编码方案进行解码得到字符流,最后使用“luit”命令中指定的编码方案(比如‘luit -encoding GBK program [args]’中的‘GBK’)进行编码,将得到的字节流传递给“命令执行单元” ;展现命令执行结果时,获取字节流形式的命令执行结果,使用“luit”命令中指定的编码方案进行解码得到字符流,再使用“UTF-8”编码方案进行编码得到字节流,最后对得到的字节流使用终端模拟器配置的编码方案进行解码,得到字符串形式的命令执行结果。
2.2、选项
“-encoding 编码方案”:指定与“UTF-8”编码方案互转的编码方案,即从“UTF-8”编码方案转换到“该编码方案”或者从“该编码方案”转换到“UTF-8”编码方案
“program [args]”:执行命令
三、实验
3.1、实验1
现有一个名为“你好吗.txt”的文件,相应于该文件名的存储内容存储的是使用“GBK”编码方案编码得到的字节流。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行ls
和luit -encoding gbk ls
命令,得到如表1所示结果。
表1
locale系列环境变量配置值 | 终端模拟器(实验了Gnome Terminal)编码方案 | ls命令执行结果截图 | luit -encoding gbk ls 命令执行结果截图 |
---|---|---|---|
zh_CN.gbk | UTF-8 |
3.2、实验2
现有一个名为“a.txt”的文件,存储有内容“你好吗?”,使用的编码格式为“UTF-8”。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行vim a.txt
和luit -encoding gbk vim a.txt(在VIM环境中,需要执行':e ++enc=utf8')
命令,得到如表2所示结果。
表2
locale系列环境变量配置值 | 终端模拟器(实验了Gnome Terminal)编码方案 | “vim a.txt”命令执行结果截图 | VIM环境中执行“:e ++enc=utf8”结果截图 | “luit -encoding gbk vim a.txt”命令&&“:e ++enc=utf8”结果截图 |
---|---|---|---|---|
zh_CN.gbk | UTF-8 |
3.3、实验3
现有一个名为“a.txt”的文件,存储有内容“你好吗?”,使用的编码格式为“GBK”。
设置locale系列环境变量配置值为“zh_CN.gbk”,终端模拟器编码方案为“UTF-8”,分别执行vim a.txt
和luit -encoding gbk vim a.txt
命令,得到如表3所示结果。
表3
locale系列环境变量配置值 | 终端模拟器(实验了Gnome Terminal)编码方案 | “vim a.txt”命令执行结果截图 | VIM环境中执行“:e ++enc=gbk”结果截图 | “luit -encoding gbk vim a.txt”命令结果截图 |
---|---|---|---|---|
zh_CN.gbk | UTF-8 |
四、其他
4.1、常见应用形式
“luit命令”较常见的一个应用形式是结合“ssh命令”使用,比如luit -encoding gbk ssh myhost
。
4.2、用到的脚本
脚本1:
1 | #!/bin/bash |
脚本2:
1 | #!/bin/bash |
参考文献
[1]man luit