![终端:帮助理解 UTF-8 文本的行为](https://linux22.com/image/229356/%E7%BB%88%E7%AB%AF%EF%BC%9A%E5%B8%AE%E5%8A%A9%E7%90%86%E8%A7%A3%20UTF-8%20%E6%96%87%E6%9C%AC%E7%9A%84%E8%A1%8C%E4%B8%BA.png)
我试图了解我在 Ubuntu 系统上观察到的以下行为。考虑以下两个文件:
$ hexdump -C 1.txt
00000000 d9 82 d8 a8 d8 a7 d9 86 d9 8a 5e d9 84 d9 86 d8 |..........^.....|
00000010 b2 d8 a7 d8 b1 5d 31 |.....]1|
00000017
和
$ hexdump -C 2.txt
00000000 d9 82 d8 a8 d8 a7 d9 86 d9 8a 5e d9 84 d9 86 d8 |..........^.....|
00000010 b2 d8 a7 d8 b1 5d 20 |.....] |
00000017
我们可以检查是否存在一个差异:
$ cmp 1.txt 2.txt
1.txt 2.txt differ: byte 23, line 1
然而,这是我所看到的:
$ echo $LANG
C.UTF-8
$ cat 1.txt
قباني^لنزار]1
$ cat 2.txt
قباني^لنزار]
我真的不理解这种行为。我在 utf-8 流中既没有看到 ALM(阿拉伯字母标记)Unicode 字符,也没有看到 RLM(从右到左标记)。以供参考:
有人可以解释我所看到的行为吗?
以供参考:
$ head -3 /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
和
$ echo $TERM
xterm-256color
$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)