Unix命令和脚本KSH外壳

jqjz2hbq  于 2022-09-21  发布在  Unix
关注(0)|答案(1)|浏览(238)

我有一个名为test.dat的文件,它有一个Unicode字符,如下所示:

Mu?oz Rivera 
35 Mu�oz Rivera Ave., Apt 1001

我使用以下命令删除了Unicode字符:

tr -Ac '[007-015][040-176]' '[000*]' < test.dat > sample.dat ;  mv  sample.dat test.dat

该命令运行良好,但问题是我的文件格式是UFT-8,但在执行该命令后,该格式被转换为ANSI-1252。

我应该在上面显示的命令中进行什么修改才能保留字符编码?

而且我可以像以前一样在命令行中看到输出文件中的数据。但如果我使用记事本++或Ultra EDIT打开处理过的文件(o/p文件),我可以看到不同的格式(ANSI而不是UFT-8)。

jgwigjjp

jgwigjjp1#

什么是UTF-8?

UTF-8使用1到4个单字节(8位)值以Unicode编码所有有效的字符码点。

当我剥离十进制128下的不可打印字符时,是否将其换成UTF-8?

您的UTF-8文件使用超过128个十进制的代码来编码这些字符代码点:

Mu?oz Rivera
35 Mu�oz Rivera Ave., Apt 1001

% tr -Ac '[007-015][040-176]' '[000*]'

此命令删除所有不可打印的内容,并替换为空字节。这实际上会破坏该文件或使其无效。它不再是符合UTF-8标准的文件。

运行脚本后的文件结果:

% file *.dat
sample.dat: data
test.dat:   UTF-8 Unicode text
% cat sample.dat
Mu?oz Rivera
35 Muoz Rivera Ave., Apt 1001

相关问题