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: