【发布时间】:2019-12-31 07:56:10
【问题描述】:
我想知道 Linux cat 如何解码文件。假设它是一个英文文本文件,该命令似乎用 ASCII 解码,但cat 将如何解码一个随机文件?
【问题讨论】:
标签: linux utf-8 command ascii decode
我想知道 Linux cat 如何解码文件。假设它是一个英文文本文件,该命令似乎用 ASCII 解码,但cat 将如何解码一个随机文件?
【问题讨论】:
标签: linux utf-8 command ascii decode
它绝对不会解码任何东西。它只是一次读取一行并逐字节输出。
就解码过程而言,它发生在您的终端软件中。您可能想了解您的 locale 如何影响系统的运行。
对于一个简短的实验,打印一些与您的终端不兼容的内容:
bash$ perl -e 'print("\xff\xff")'
��
现在观察cat 是如何影响它的(即完全没有)
bash$ perl -e 'print("\xff\xff")' | cat
��
要更详细地检查发生了什么,也许可以在十六进制转储程序中添加一个管道,例如xxd:
bash$ perl -e 'print("\xff\xff")' | xxd
00000000: ffff
bash$ perl -e 'print("\xff\xff")' | cat | xxd
00000000: ffff
(假设您有一个语言环境,其中输出不是实际字符的有效字节序列,例如 UTF-8。)
或许也可以看看What is character encoding and why should I bother with it
【讨论】: