小编Dar*_*ula的帖子

管道/STDOUT/STDIN 中的数据是如何编码的?

我最近一直在研究各种文本编码,但找不到任何关于如何在管道中编码数据的好来源。

以下是我的一些一般假设:

  1. 管道处理二进制,并且与编码无关
  2. 管道每一侧的应用程序(包括 STDOUT/STDIN)应该对文本编码格式达成共识
  3. 终端/控制台也算作这些应用程序之一,应该使用相同的编码。
  4. Unix 应用程序默认为 UTF-8,但可以更改。

这些准确吗?有人可以扩展这些在具有不同默认值的系统中如何工作吗?

继续提问:

  • 什么程序像cat发送到终端?他们在 unicode 中“思考”吗?或者他们只是读取字节并发送字节,由终端来解释编码文本?

我曾尝试在终端中更改编码,但似乎没有帮助。

$ printf 'ö' | hexdump
0000000 c3 b6
0000002
Run Code Online (Sandbox Code Playgroud)
$ export LANG=en_US.UTF-16
$ printf 'ö' | hexdump
0000000 c3 b6
0000002
Run Code Online (Sandbox Code Playgroud)

pipe character-encoding stdin

2
推荐指数
1
解决办法
1433
查看次数

标签 统计

character-encoding ×1

pipe ×1

stdin ×1