Arquivos ASCII - Convertendo Formatos

Introdução

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 é.

O Problema

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 Linux

Veja 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...).

A Solução

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:

  1. Usar um editor de texto que faça a conversão automaticamente, ou
  2. usar um programa que altere o código ASCII do seu 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.

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