caracteres estranhos no shell bash

2

Às vezes, quando uso a ferramenta rm ou stat no shell bash, recebo caracteres estranhos:

root@server:~# rm -vr blah
removed directory: �blah�
root@server:~# 

As configurações de local podem ser vistas aqui:

root@server:~# locale -a
C
C.UTF-8
en_US.utf8
POSIX
root@server:~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
root@server:~# 

Qual pode ser o motivo disso?

    
por Martin 27.08.2015 / 17:06

2 respostas

1

Esses caracteres são provavelmente (U + 2018 MARCA ÚNICA DE COTAÇÃO) e (U + 2019 MARCA ÚNICA DE COTAÇÃO CERTA).

Como apenas um caractere de substituição está sendo exibido, o emulador de terminal provavelmente está configurado corretamente em UTF-8, mas a fonte que está sendo usada não possui esses caracteres. Então, o terminal usa o glifo para o caractere de substituição.

Com esse ajudante:

describe_non_ascii() {
  perl -Mcharnames=full -Mopen=locale -lpe '
   s{
      [^[:ascii:]]
   }{
      sprintf("{U+%04X: %s}", ord($&),  charnames::viacode(ord($&)))
   }gex'
}

Eu posso ver:

$ rm -vr blah | describe_non_ascii
removed directory: {U+2018: LEFT SINGLE QUOTATION MARK}blah{U+2019: RIGHT SINGLE QUOTATION MARK}

Em UTF-8, esses caracteres são codificados em 3 bytes cada:

$ printf '\u2018\u2019' | hd
00000000  e2 80 98 e2 80 99                                 |......|
00000006

Portanto, se o terminal não foi configurado corretamente em UTF-8, esperaria ver 3 glifos, possivelmente três , se nenhum desses bytes fosse caracteres no conjunto de caracteres que o terminal espera para cada um.

    
por 13.12.2017 / 08:44
0

Pode ser a codificação do seu terminal.
Exemplo eu uso o terminal de putty e tive que mudar para utf-8.

    
por 27.08.2015 / 17:15

Tags