Que tipo de espaço é esse?

3

Isso é bem estranho, usando um documento .txt enviado por um amigo usando o Windows, acredito ter encontrado um caractere de espaço estranho.

Se eu executar cat file , o caractere aparece como

Além disso, eu estava executando if [[ " " = " " ]] ; then echo yes ; fi e não estava me dando um código de sucesso. (O personagem perde sua propriedade uma vez no Stack Exchange; portanto, executá-lo fornecerá um código de sucesso)

Editar O arquivo estava na codificação iso-8859-1 e não utf-8.

Usando a solução do Serg, eu consegui convertê-lo para utf-8

    
por TuxForLife 08.06.2015 / 23:14

4 respostas

3

Como a codificação do arquivo foi informada como iso-8859-1 , você pode converter a codificação de um arquivo usando iconv -f old-encoding -t new-encoding inputfile > outputfile

Mais informações: link

    
por Sergiy Kolodyazhnyy 08.06.2015 / 23:35
3

Você pode usar dos2unix . De man dos2unix :

dos2unix - DOS/Mac to Unix and vice versa text file format converter

Por exemplo, você pode fazer:

dos2unix -n file.in file.out

Agora file.out estará no formato UNIX. dos2unix pode converter os finais e codificações de linhas do Windows para o formato UNIX para que você possa usá-los em ambos os casos. Se não estiver instalado, você pode instalá-lo por:

sudo apt-get install dos2unix
    
por heemayl 08.06.2015 / 23:42
1

Um palpite que tenho é o fim da linha.

O Windows usa \r\n enquanto * o UNIX usa \n .

Provavelmente, o que você está vendo são os caracteres \r , já que eles não têm significado para * UNIX.

Não há problema em abrir um arquivo de texto no Windows com \n endings, pois o Windows o converte automaticamente em \r\n (somente no modo Texto), enquanto * UNIX não tem esse recurso.

    
por Ismael Miguel 09.06.2015 / 01:10
1

O personagem que você está vendo parece um espaço sem quebra. É o número de caractere 160 em iso-8859-1 e unicode. Em alguns layouts de teclado, ele pode ser inserido usando alt espaço . Se você visualizar o arquivo com cat -e , ele será exibido como M- , como neste exemplo:

$ printf '\xa0\n' | cat -e
M- $
    
por kasperd 09.06.2015 / 12:10

Tags