Em um shell onde \u
é válido (bash +4.3, ksh93 ou zsh), podemos imprimir caracteres Unicode:
$ printf 'a b c \ua0 \ua1 \ua2 \ua3 \n'
a b c ¡ ¢ £
Que são alguns caracteres do intervalo Latin-1_Supplement .
No entanto, assim que um 9f
caractere Unicode é adicionado, a impressão é interrompida até que um Unicode 9c
seja impresso.
Ambos \u9f
e \u9c
(APC e ST) são C1
caracteres de controle .
$ printf 'a b c \u9f d e f \u9c \ua0 \ua1 \ua2 \ua3 \n'
a b c ¡ ¢ £
Os personagens definitivamente desaparecem.
É certo que printf
está gerando todos os caracteres, e que redirecionando a saída para algum outro software (não o terminal) mostrará os caracteres gerados:
$ printf 'a b c \u9f d e f \u9c \ua0 \ua1 \ua2 \ua3 \n' | od -A n -tx1
61 20 62 20 63 20 c2 9f 20 64 20 65 20 66 20 c2
9c 20 c2 a0 20 c2 a1 20 c2 a2 20 c2 a3 20 0a
Isso chega a demonstrar que os personagens estão sendo gerados. Então, por que eles não estão sendo impressos (mostrado com algum glifo visível)?
As perguntas que tenho são:
- Está
APC
realmente conectado aST
. Onde está definido? - Os caracteres entre esses dois caracteres são enviados para algum aplicativo?
- Se sim, para qual aplicação?
- Quem é responsável por tal redirecionamento? O shell, o terminal ou algo mais?
EDITAR
Nem os terminais xterm
nem removem os caracteres.konsole
d e f
Isso confirma que é um problema interno do aplicativo do terminal, não do shell. Ainda não encontrei onde isso está definido.