Nova linha: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
VolkovBot (discussão | contribs)
m Bot: Adicionando: ru:Новая строка
Rjbot (discussão | contribs)
m Checkwiki + ajustes,
Linha 16:
O padrão [[Unicode]] lida com este problema ao definir um grande número de caracteres que devem ser interpretados pelas aplicações como sendo fim de linha <!-- Veja http://www.unicode.org/versions/Unicode4.0.0/ch05.pdf -->
 
* <tt>&nbsp;LF</tt>:<tt>&nbsp;&nbsp;&nbsp;</tt> [[Line Feed]], <tt>U+000A</tt><br>
* <tt>&nbsp;CR</tt>:<tt>&nbsp;&nbsp;&nbsp;</tt> [[Carriage return]], <tt>U+000D</tt><br>
* <tt>&nbsp;CR</tt>+<tt>LF</tt>: <tt>CR</tt> seguido por <tt>LF</tt>, *<tt>U+000D</tt> seguido por <tt>U+000A</tt><br>
* <tt>&nbsp;NEL</tt>:<tt>&nbsp;&nbsp;</tt> Next Line, <tt>U+0085</tt><br>
* <tt>&nbsp;FF</tt>:<tt>&nbsp;&nbsp;&nbsp;</tt> Form Feed, <tt>U+000C</tt><br>
* <tt>&nbsp;LS</tt>:<tt>&nbsp;&nbsp;&nbsp;</tt> Line Separator, <tt>U+2028</tt><br>
* <tt>&nbsp;PS</tt>:<tt>&nbsp;&nbsp;&nbsp;</tt> Paragraph Separator, <tt>U+2029</tt>
 
== Histórico ==
O padrão [[ASCII]] foi desenvolvido simultaneamente pela [[International Organization for Standardization|ISO]] e pela [[American Standards Association|ASA]]. A seqüência <tt>CR</tt>+<tt>LF</tt> era de uso comum em vários computadores que usavam máquinas [[teletipo]] como console, uma vez que esta seqüência era necessária para posicionar a impressora no começo duma nova linha. Como o conceito do isolamento dos detalhes de hardware por um [[driver de sidpositivo|driver]] de software ainda não tinha surgido; os programas tinham de enviar diretamente tais caracteres. O uso de dois caracteres devia-se ao fato de que os teletipos não eram rápidos o suficiente para retornar do canto direito ao canto esquerdo no tempo disponível para apenas um caractere — assim o <tt>CR</tt> vinha em primeiro lugar. Na verdade, muitas vezes era necessário acrescentar ainda um terceiro caractere: <tt>CR</tt>+<tt>LF</tt>+<tt>NUL</tt> (onde NUL significa “não faça nada”) ou <tt>CR</tt>+<tt>CR</tt>+<tt>LF</tt> (enviando CR duas vezes) para esperar que a cabeça se estabilizasse. Tendo os teletipos se tornado obsoletos, os programas criados para eles fizeram com que esta seqüência de dois caracteres persistisse.
 
== Linguagens de programação ==
Para tornar os programas [[portabilidade|portáveis]], as [[linguagem de programação|linguagens de programação]] criam mecanismos para abstrair os diferentes tipos de seqüências de quebra de linha existentes.
 
Linha 43:
O [[File Transfer Protocol|FTP]] converte automaticamente as quebras de linha de arquivos transferidos entre [[Sistema operacional|sistemas]] com diferentes representações quando a transferência é feita em modo ASCII. Porém, transferir arquivos binários neste formato pode ter resultados desastrosos: qualquer ocorrência dos caracteres que representam a quebra de linha — que neste contexto não representam realmente uma quebra de linha — será incorretamente convertida para a representação nativa do sistema, corrompendo o arquivo. Embora o cliente FTP possa tentar adivinhar o tipo do arquivo (por exemplo, a partir de sua extensão) cabe ao usuário decidir o modo de transferência: binário ou ASCII. Havendo dúvidas, use o modo binário, de maneira que o arquivo não seja alterado durante a FTP, embora possa ser apresentado incorretamente.
 
== Utilitários para conversão ==
Em geral, é a maneira mais simples de converter um arquivo de texto entre diferentes formatos de quebra de linha; a maioria dos editores de texto modernos podem ler e escrever arquivos usando ao menos a convenção ASCII <tt>CR</tt>/<tt>LF</tt>. Infelizmente isto não vale para o editor padrão do [[Microsoft Windows|Windows]] [[bloco de notas]], mas vale para o [[Wordpad]]. No [[Unix]], os comandos <tt>dos2unix</tt> e <tt>unix2dos</tt> podem ser usados para converter entre o ASCII <tt>CR</tt>+<tt>LF</tt> (DOS/Windows) e o <tt>LF</tt> (Unix) — embora a sintaxe deste comando possa variar.
 
== Exemplos ==
Detectar e substituir caracteres de quebra de linha em C:
 
Linha 56:
/* Procure por LF e os substitua */
if (last - 1 &gt;= buf && *--last == '\n')
* *last = '\0';
/* Procure por CR e os substitua */
if (last - 1 &gt;= buf && *--last == '\r')
* *last = '\0';
 
/* Faça algo de útil com a string sem newline que está em buf */
Linha 65:
</source>
 
{{ref-sectionReferências|Notas}}
 
== Referências ==
* The Unicode Reference, parágrafo 5.8 do [http://www.unicode.org/versions/Unicode4.0.0/ch05.pdf Capítulo 5] do Unicode 4.0
* [{{Link||2=http://www.rfc-editor.org/EOLstory.txt |3=The End-of-Line Story]}}
* [{{Link||2=http://www.w3.org/TR/newline |3=The &#x5B;NEL&#x5D; Newline Character]}}
* [{{Link||2=http://vi-improved.org/wiki/index.php/FileFormat |3=How to convert a group of mixed text files to the preferred line ending all at once] |4=using [[vim]]}}
 
{{DEFAULTSORT:Nova Linha}}
[[Categoria:Caracteres de controle]]