Arquivos texto (aqueles que contém somente texto) não são representados da mesma forma nos diversos sistemas operacionais existentes. Um exemplo clássico é a diferença entre a representação de arquivos ASCII em sistemas da MicroSoft e sistemas da fámilia Unix (como o Linux). Enquanto a representação da MicroSoft usa um valor 13, seguido de um valor 10 para representar um fim de linha (escrito quando você digita o [ENTER]), a representação Unix (também usadas nos Macs modernos) usa apenas o valor 10. O resultado é que se um arquivo ASCII for transferido byte a byte de um sistema para outro, ele pode não ser apresentado corretamente na tela do sistema para onde foi copiado.Alguns editores de texto detectam esse tipo de problema e fazem a correção automaticamente, para apresentar o arquivo de maneira correta para o usuário. Outros, apresentam o arquivo da maneira como ele realmente é.
Muitos alunos do curso, por não saber desses detalhes, fazem transferência de arquivos com código fonte (arquivo ASCII) e depois passam a observar coisas estranhas acontecendo com seus arquivos.
![]()
Arquivo no formato Unix, apresentado incorretamente no Windows![]()
Arquivo no formato Windows apresentado no próprio Windows![]()
Arquivo no formato Windows, apresentado incoretamente no Linux![]()
Arquivo no formato Unix apresentado no LinuxVeja bem:
O problema se agrava ainda mais se a pessoa tenta editar isso "na mão", não arruma todos os finais de linha e depois faz novas transferências do arquivo, entre Linux e Windows, aumentando a quantidade de caracteres estranhos até que o arquivo fique ilegível (já casos em que o próprio compilador não conseguia interpretar o arquivo...).
- O Windows não entende o caracter 10 como final de linha, então mostra arquivos Unix sem as quebras de linha e com um caracter esquisito onde deveria haver a quebra de linha.
- O Linux por sua vez não entende o caracter 13 como início do código para fim de linha e mostra o caracter 13 (como um símbolo esquisito), depois vê o caracter 10 e muda de linha
O método mais usado para transferência de arquivos entre sistemas é o FTP (file transfer protocol) todo cliente de FTP permite transferências de arquivo no modo binario (byte a byte) ou no modo ASCII (com conversão automática de final de linha entre sistemas diferentes). Se você transferir um arquivo binario (como um zip por exemplo) no modo ASCII, o arquivo fica corrompido (pois foi alterado durante a transferência). Se você transferir um arquivo ASCII no modo binário podem ocorrer os problemas mostrados nas imagens acima.Alguns protocolos de transferência de arquivo utilizam somente o modo binário (como o SMB, por exemplo, que é usado nos laboratórios de computação do DCC para transferir arquivos entre uma estação Windows e o servidor Linux), neste caso você tem duas opções para não ter problemas com os arquivos texto:
No servidor ASSEMBLY, temos instaldo o programa dos2unix que converte do formato MS para o formato Unix. Existe tambem o programa unix2dos que faz a conversão contrária. Para maiores detalhes, digite o comando man dos2unix ou man unix2dos num terminal do servidor ASSEMBLY.
- Usar um editor de texto que faça a conversão automaticamente, ou
- usar um programa que altere o código ASCII do seu texto.
Para maiores informações, ou para esclarecer dúvidas, procure um dos monitores ou envie e-mail para o atendimento.
Esta página é mantida por Bruno Schneider