O que acontece quando lanço um arquivo sem texto?

1

Quando eu executo o cat em um arquivo que não é apenas texto, ele retorna uma grande quantidade de caracteres (muitos dos quais se parecem com isso ). O que são esses dados?

    
por Theodcyning 11.03.2015 / 00:45

2 respostas

3

Muitos dos dados em um arquivo não textual não podem ser representados usando caracteres de qualquer um dos conjuntos de caracteres disponíveis. Quando esses dados são processados pelo gato e mostrados na tela, eles são exibidos como ou outros caracteres sem sentido, já que não há outra maneira de exibi-los.

    
por 11.03.2015 / 00:48
2

Na verdade, não é um "caráter sem sentido". Esse é o caractere de substituição Unicode . Ele é exibido em um terminal usando a codificação UTF-8 ao tentar exibir um byte que não seja um código UTF-8 legal. Pode ser exibido (mas muito menos provável) quando as fontes disponíveis para o terminal não fornecem um valor Unicode legal específico, mas é mais provável que, nesse caso, um espaço em branco é mostrado.

Normalmente, os códigos 32-126 (US-ASCII, o conjunto de caracteres portáteis POSIX) são imprimíveis. Os códigos 160-255 são imprimíveis na codificação ISO-8859-1, mas não como UTF-8, porque seriam um dos dois ou mais bytes que compõem um valor Unicode codificado em UTF-8. Da mesma forma, os códigos 128-159 são caracteres de controle em ISO-8859-1 (e não-impressão), mas em UTF-8, esses são um dos dois ou mais bytes, etc.

Se você usar cat de um arquivo que não seja de texto, é provável que ele tenha bytes do intervalo 128-255, e é improvável que eles formem valores UTF-8 válidos. Então você verá .

Leitura adicional:

por 08.06.2016 / 03:21

Tags