Différence entre saut de ligne(LF \n) et retour chariot(CR \r)

Messages postés
59
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
4 juin 2010
- - Dernière réponse : cs_Kysic
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
- 24 juil. 2007 à 14:00
Bonjour,
Est ce que quelqu'un pourrait m'expliquer la différence entre un saut de ligne et un retour chariot car quand j'essaye je constate que le résultat est le meme on passe à la ligne suivante. De meme lorsque l'on applique un \r\n on ne constate que le saut d'une ligne (et pas 2 lignes sauté) alors si quelqu'un pouvais m'eclaircir les idées sur ce sujet ca m'arrangerais :)

Merci d'avance

mickadevelop
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
1
Merci
Salut,

Juste pour préciser les indications données par coucou :

Il s'agit de caractères ancestralement utilisés pour commander les imprimantes
Et oui !
\n = Saut de ligne
\r = Retour charriot

Ces noms ont un sens avec une imprimante :

Bonjour
J'ai juste sauté une ligne avec \n

Bonjour



Je suis revenu en début de ligne et ai sauté 4 lignes (\r\n\n\n\n)


Bon, mais ça n'a plus aucun sens aujourd'hui...

A+

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de J_G
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
0
Merci
Salut
\n => linux & unix & autres posix systems
\r\n => windows
<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
0
Merci
Juste pour une dernière précision, sous mac c'est \r

http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
0
Merci
Salut

mac c'est... tres special...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
0
Merci
(C'est quand même à se demander si ils ne l'ont pas fait tous, sans compter encore les codages à utlisé suivant le protocole (pour http faut mettre des \r\n en fin de ligne je crois...))
Commenter la réponse de cs_Kysic
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Non, en HTTP, \n suffit... (Dans les entêtes du moins.
Commenter la réponse de J_G
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
0
Merci
Salut

en http, on DOIT utiliser \r\n... c'est une question de normes aussi...

http://www.iprelax.fr/http/http_descr1.php

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Commenter la réponse de coucou747
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
ok,

autant pour moi
Commenter la réponse de J_G
Messages postés
59
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
Ok merci pour toutes vos réponses :)
je dois dire qu'au premier abord ca me semble bien compliqué :(
Si je comprends bien, si je réalise une application qui écrit des infos dans un fichier texte : 
   sous windows je devrais utiliser "\r\n" pour sauter une ligne
   si je met cette application sur un serveur linux (comme chez beaucoup d'herbergeur) mon application ne fonctionnera plus normalement et je devrais remplacer les "\r\n" par des "\n" pour sauter une ligne dans mon fichier texte.
Est ce exact?

Par contre si j'ecris des infos sur une page web dynamique (format http) il faut que je place un "\r\n" pour sauter une ligne (bien que je sache que le saut de ligne ne se verra pas (sauf peut etre un espace qui apparait) il faut utiliser la balise
pour un saut de ligne en html). Concernant ce point j'ai lu un article http://www.pasteur.fr/~llafitte/Docs/HTML_4.0/struct/text.html#edef-PRE qui me laisse penser que sur une page web qu'on utilise "\r", "\n" ou "\r\n" le resultat sera le meme cet a dire qu'on observera bien un saut de ligne au niveau du source de la page.
Est ce exact?

Si on pousse la question est ce que ca marche pareil lorsque l'on écrit un mail (fonction mail())?

Enfin ma dernière question va surement vous sembler stupide mais bon je la pose quand meme sinon ca va me pourrir le we. Comme J_G l' a preciser le retour chariot servait pour les imprimantes dans le passé à faire un retour en début de ligne. Est ce que ce comportement est révolu c'est à dire est ce que si on applique un "\r"  dans un environnement inadapté est ce que l'on risque d'effacer le début de ligne et ainsi réaliser une XSS avec un "\r"?
exemple :
<script>alert('coucou');</script><td><?print($variablesaisie);?></td>
si on place la chaine "\r toto" dans la variable $variablesaisie est ce que ca risque d'effacer ce qu'il y as sur la ligne avant le print ou est ce qu'on ne risque rien a ce niveau?
Merci d'etre indulgent pour cette derniere question.

mickadevelop
Commenter la réponse de mickadevelop
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
0
Merci
Pour la dernière question, non il n'y a pas de risque, le \r n'aura pas ce comportement.
Pour ce qui est du retour à la ligne dans les pages html, pas de problème pour le retour à la ligne (en fait on parlait des retours à la ligne dans les entete http utilisé par le protocole, pour permettre des échanges entre le serveur qui héberge les pages, et le navigateur web).
Remarque dans un alert javascript, le retour à la ligne est \n simple.
Sinon, pour ce qui est de ton application, il est préferable que ton application respecte les standards de la plateforme si le fichier texte doit être lu par l'utilisateur, par exemple le bloc note windows ne supporte pas les \n simple (enfin sous XP, sous Vista je ne sais pas), il mettra tout sur la même ligne ce qui n'est pas très lisible, avec un caractère bizare en plus. Après (la pluspart) des éditeurs un peu plus évolué supporte les deux.
http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic
Messages postés
59
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
4 juin 2010
0
Merci
Bonjour à tous,
et merci pour cette dernière réponse que je trouve bien détaillé :)

Il me reste néanmoins quelques questions concernant cette dernière réponse :

Kysic quand tu dis "pour le retour à la ligne dans les pages html pas de probleme" cela veut il dire que si on utilise "\r", "\n" ou "\r\n" il y as effectivement un saut de ligne dans la source de la page?

Lorsque l'on compose un email est ce que ca marche pareil cet à dire que l'on utilise "\r", "\n" ou "\r\n" il y aura effectivement un saut de ligne que ce soit dans les headers ou dans le corps du message?

Et enfin quand tu dis "il est preferable d'utiliser les standard de la plate forme" cela veut donc bien dire que si on écrit un fichier texte et que par la suite on à besoin de lire avec un programme sur serveur chaque ligne du fichier sur linux il faut utiliser "\n" sur windows il faut "\r\n" et mac "\r". Est ce exact? 

Merci pour votre patience :) et pour vos eclairciement précieux

mickadevelop
Commenter la réponse de mickadevelop
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
0
Merci
Kysic quand tu dis "pour le retour à la ligne dans les pages html pas
de probleme" cela veut il dire que si on utilise "\r", "\n" ou "\r\n"
il y as effectivement un saut de ligne dans la source de la page?

 ->je dis surtout que ça ne changera pas l'affichage de la page (en html le retour à la ligne est codé par
, à moins que l'on utilise des balises , et auquel cas le navigateur ce débrouillera), et si l'on affiche la source de la page, je suppose que ça dépendra avec quoi on l'affiche, si c'est avec firefox je penses qu'il affichera les retours à la ligne quel que soit la façon dont ls sont codés.

Lorsque l'on compose un email est ce que ca marche pareil cet à dire
que l'on utilise "\r", "\n" ou "\r\n" il y aura effectivement un saut
de ligne que ce soit dans les headers ou dans le corps du message?
-> pour ce qui est des headers, ce n'est pas toi qui t'en occupe (enfin en général), et ce sera automatiquement \r\n car définit par le protocole, et pour ce qui est du corps du message, je ne sais pas trop si c'est normalisé, j'aurais tendance à dire que la machine ou le message est écrit mettra son saut de ligne, et que l'outil qui te permettra de lire le mail se débrouillera pour mettre les retours à ligne qu'il soit coder \r \n ou \r\n, et si le message est en html, de toute manière ça changera pas grand chose.

Et
enfin quand tu dis "il est preferable d'utiliser les standard de la
plate forme" cela veut donc bien dire que si on écrit un fichier texte
et que par la suite on à besoin de lire avec un programme sur serveur
chaque ligne du fichier sur linux il faut utiliser "\n" sur windows il
faut "\r\n" et mac "\r". Est ce exact?
-> encore une fois cela va dépendre avec quoi tu va le lire, par exemple en java il y a une méthode readLine qui se débrouillera pour renvoyer la ligne que la fin soit marquer avec \n ou \r\n.
Tu peux aussi très bien créer un fichier avec des retour à la ligne codé \r\n sous linux, en gros le codage de fin de ligne est juste une norme qui a été définie différemment sur chacune des plateformes, une application utilisera normalement par défaut le standard de la plateforme sur laquelle elle tourne, mais sera souvent capable de lire (et même d'écrire) en codant les retours à la ligne différemment. Tout dépendra donc des applications utilisées.
http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic