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