Imprimir um caractere com um codepoint

2

Eu tenho uma lista de pontos de código como 0x13000, 0x1300A. Eu tenho que imprimir os caracteres Unicode correspondentes do bash. Eu já tentei fazer isso com outros comandos que encontrei pesquisando no fórum ( No bash, como posso converter um ponto de código Unicode [0-9A-F] em um caractere imprimível? ) , mas eles não funcionaram.

Eu tentei

echo -ne 'x13000/x130FF/' | iconv -f utf-16be

e, usando perl no terminal

perl -C -e 'print chr 0x130F0' 
    
por Lorenzo Epifani 10.11.2016 / 15:44

2 respostas

4

Isso é feito em duas etapas:

$ printf "$(printf '\U%08x' 0x13000)\n"
                                    
por 10.11.2016 / 17:25
2

Com perl , para gerar o caractere no conjunto de caracteres de localidade:

perl -Mopen=locale -le 'print chr($_) for 0x13000 .. 0x130ff'

Para alguns conjuntos de caracteres (não UTF-8), vi perl errando. Alternativamente, você poderia fazer:

perl -e 'print pack("L>2", $_, 10) for 0x13000 .. 0x130FF' |
  iconv -f UCS-4BE

para fazer com que o sistema iconv faça a tradução (no caso desses hieróglifos egípcios, eu não espero que muitos conjuntos de caracteres além do UTF-8 possam suportá-los de qualquer maneira). Isso seria equivalente a que zsh / bash para seu $'\UXXXXXXXX' .

Para gerá-los em UTF-8, independentemente do conjunto de caracteres do código do idioma:

perl -CO -le 'print chr($_) for 0x13000 .. 0x130ff'

Seu

perl -C -le 'print chr 0x130F0'

funcionaria, desde que o conjunto de caracteres do código do idioma seja UTF-8 (verifique a saída de locale charmap ).

Isso produziria o personagem. Agora, você também precisa de uma fonte com o caractere EGYPTIAN HIEROGLYPH E026 e seu emulador de terminal configurado para usar essa fonte se você quer que seja exibido lá.

No Debian e nos derivados, veja o fonts-ancient-scripts package.

    
por 10.11.2016 / 17:49