Bem-vindo: Qui, 28 de Março 2024, 11:18 Pesquisa avançada

[RESOLVIDO] Incompatibilidade Linux/Windows para codigos...

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

[RESOLVIDO] Incompatibilidade Linux/Windows para codigos...

Mensagempor HIzium » Qui, 21 de Novembro 2013, 3:49

... e textos.
Oi, recentemente me deparei com alguns problemas na faculdade:
Eu costumo copiar os conteúdos da lousa ou slides no Ubuntu usando o nano e programar em C usando o Code Blocks e varias vezes envio os códigos para professores ou os textos para colegas.
Mas se eu envio o arquivo .txt, as vezes meus amigos não conseguem ler nada, os caracteres com acentuação viram símbolos estranhos, e recentemente eu enviei um trabalho importante para uma professora minha ( o trabalho vale 30% da nota do semestre), enviei o "arquivo.c" e aconteceu o mesmo, os caracteres com acento no Ubuntu aparecem como símbolos estranhos no Windows, mas também uma das funções do programa ( a principal) que era completamente funcional no Ubuntu não funcionava no computador da minha professora.
Eu testei em vários computadores com Windows e o código não funcionava, então eu testei no computador de um amigo com Ubuntu e estava completamente funcional.

Alguém já teve esse tipo de problema ou sabe de alguma solução para isso?
Editado pela última vez por HIzium em Qui, 28 de Novembro 2013, 20:39, em um total de 3 vezes.
Avatar do usuário
HIzium
 
Mensagens: 31
Registrado em: 28 Julho, 2013

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Claudio Novais » Qui, 21 de Novembro 2013, 11:01

De uma forma muito resumida, o que acontece é o seguinte: o caractere end-of-line do Linux e outros sistemas Unix, nomeadamente o MacOS, não é o mesmo que o utilizado no Windows. Por esse motivo um ficheiro de texto gravado em Windows não é apresentado da mesma forma no Linux ou vice-versa.

Não sei qual foi o primeiro a implementar ficheiros de texto, mas duvido muito que tenha sido o windows primeiro que o Unix em geral. mas não fui confirmar. Os comportamentos do end-of-line são os seguintes:
  • Windows: '\r\n'
  • Mac (OS 9-): '\r'
  • Mac (OS 10+): '\n'
  • Unix/Linux: '\n'

Em todo o caso, apesar de não saber como é o comportamento das aplicações padrão do Windows, no caso do Linux, a maioria das aplicações já prevêem esse problema e têm primitivas de abertura e de gravação que permitem escolher qual o formato desse caractere. Por exemplo, o editor de texto padrão do Ubuntu, o Gedit (que pertence ao projeto Gnome), permite escolher de que forma o end-of-line é gravado. Por isso a solução é tão simples quanto gravar com essa forma.

Sobre os acentos, não sei bem qual é o problema pois não me recordo de ter esse problema em ficheiros simples, no entanto, procure por alguma opção de codificação e escolha UTF8, deve resolver.

Para finalizar, se quiser saber mais sobre a questão das diferenças do end-of-line entre os vários sistemas operativos, recomendo que veja esta resposta no stack-overflow que referencia a Wikipedia:

Quando eu ainda não conhecia os programas do Linux que tinham estas opções de gravação, eu cheguei a utilizar o programa dos2unix. Não sei se lhe será útil ou não, mas caso precise aqui fica a dica, em português:
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Miguel Fonseca » Qui, 21 de Novembro 2013, 14:45

Boas Cláudio, eu já tive alguns problemas (quando ainda tinha Windows!) na leitura de ficheiros entre os dois SO's e conseguia resolver com a alteração da codificação para UTF-8.

Mas eu não tinha conhecimento relativamente aos "end-of-lines"! 8|

Obrigado pela explicação educativa!

Fiquei a perceber um pouco mais as diferenças e porque aconteciam os problemas.

Hasta.
It is only in Love and Murder, that we still remain sincere! - Friedrich Durrenmatt
Avatar do usuário
Miguel Fonseca
Bleeding-edge Helper
 
Mensagens: 2512
Registrado em: 10 Junho, 2011

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Claudio Novais » Qui, 21 de Novembro 2013, 16:16

Qualquer pessoa que tenha feito uma leitura de ficheiros em C sabe isto perfeitamente. :D Infelizmente ¬¬

Basicamente o parsing dos ficheiros tem de ser feito de forma diferente por causa desse pormenor.
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Luis Cardoso » Qui, 21 de Novembro 2013, 21:33

Claudio Novais (21-11-2013, 15:16) escreveu:Qualquer pessoa que tenha feito uma leitura de ficheiros em C sabe isto perfeitamente. :D Infelizmente ¬¬

Basicamente o parsing dos ficheiros tem de ser feito de forma diferente por causa desse pormenor.

O problema não é quando se trata de abrir ficheiros nos diferentes SO... Imagina ter este problema mesmo na comunicação via hardware... O pessoal já devia ter escolhido uma terminação, para bem da nossa sanidade enquanto programadores! E por vezes é uma coisa como esta, tão insignificante, que dá problemas na criação de drivers... Quando nos enganamos no caractere de terminação ¬¬
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Claudio Novais » Qui, 21 de Novembro 2013, 22:47

Um problema numa comunicação geralmente é controlado pela integridade do ficheiro. Há vários protocolos para esse assunto, tanto na gravação de discos como no TCP/IP. Não sei se há esse controlo em tudo, mas que existe muito controlo isso existe.

Claro que em algumas situações esse controlo, na minha opinião é bastante limitado, pelo menos até há algum tempo, que se limitava (limita?) a um bit. No caso do TCP, a coisa é mais correta.

Avante... nunca tive queixa em relação a esse assunto. Acredito que na área de eletrónica a coisa possa ser mais relevante, nos computadores, nunca tive problemas nesse sentido. Apesar de que na altura dos pentiums 4 e antes havia alguma incidência desses problemas, sim!
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Luis Cardoso » Qui, 21 de Novembro 2013, 23:00

Claudio Novais (21-11-2013, 21:47) escreveu:Um problema numa comunicação geralmente é controlado pela integridade do ficheiro. Há vários protocolos para esse assunto, tanto na gravação de discos como no TCP/IP. Não sei se há esse controlo em tudo, mas que existe muito controlo isso existe.

Claro que em algumas situações esse controlo, na minha opinião é bastante limitado, pelo menos até há algum tempo, que se limitava (limita?) a um bit. No caso do TCP, a coisa é mais correta.

Avante... nunca tive queixa em relação a esse assunto. Acredito que na área de eletrónica a coisa possa ser mais relevante, nos computadores, nunca tive problemas nesse sentido. Apesar de que na altura dos pentiums 4 e antes havia alguma incidência desses problemas, sim!

Ainda hoje há esse problema, ainda há dias tive de comunicar com um sensor de pH e com uma câmara, mas o fim dos comandos era diferente, o que gerou alguns problemas na comunicação, porque queria usar a mesma função... Acabei por ter de adicionar mais um parâmetro, só para distinguir o tipo de terminação...
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Claudio Novais » Qui, 21 de Novembro 2013, 23:04

Lá está, tens de implementar algo semelhante nesses casos. :\
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor Luis Cardoso » Qui, 21 de Novembro 2013, 23:09

Claudio Novais (21-11-2013, 22:04) escreveu:Lá está, tens de implementar algo semelhante nesses casos. :\

Foi por isso que eu disse que já estava na altura de se decidirem por um... É que depois um código que podia ficar simples, tem de se tornar complexo só por causa dos caracteres 10 e 13, respectivamente '\n' e '\r'.

É verdade que quando se usa hiper-terminal, se pode escolher a terminação ao configurar a ligação, mas quando se trata de implementar num CI para controlar coisas como as acções da máquina de lavar, módulos internos de um carro, etc, etc, dá uma dor de cabeça... :roll:
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Incompatibilidade Linux/Windows para codigos e textos

Mensagempor HIzium » Qui, 21 de Novembro 2013, 23:58

Bom, gostaria de agradecer pelas respostas, me ajudaram bastante.
Vou usar o Gedit para esses textos compartilhados, é bem simples e se, antes de salvar o arquivo, eu escolher o modo de terminação do Windows, os acentos aparecem normalmente.

Obrigado!!
Avatar do usuário
HIzium
 
Mensagens: 31
Registrado em: 28 Julho, 2013

Próximo

Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 61 visitantes