【问题标题】:How does Linux 'cat' decode files?Linux“猫”如何解码文件?
【发布时间】:2019-12-31 07:56:10
【问题描述】:

我想知道 Linux cat 如何解码文件。假设它是一个英文文本文件,该命令似乎用 ASCII 解码,但cat 将如何解码一个随机文件?

【问题讨论】:

    标签: linux utf-8 command ascii decode


    【解决方案1】:

    它绝对不会解码任何东西。它只是一次读取一行并逐字节输出。

    就解码过程而言,它发生在您的终端软件中。您可能想了解您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2011-06-28
      相关资源
      最近更新 更多