터미널: UTF-8 텍스트의 동작을 이해하는 데 도움이 됩니다.

터미널: UTF-8 텍스트의 동작을 이해하는 데 도움이 됩니다.

저는 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(아랍 문자 표시) 유니코드 문자나 RLM(오른쪽에서 왼쪽 마커)이 표시되지 않습니다. 참고로:

  • ALMUTF-8에서는 d89c이지만
  • RLMUTF-8에서는 e2808f.

누군가 내가 보고 있는 행동을 설명할 수 있나요?

참고로:

$ 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)

관련 정보