Différence entre saut de ligne(LF \n) et retour chariot(CR \r)
mickadevelop
Messages postés55Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention 4 juin 2010
-
11 juil. 2007 à 22:34
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 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 :)
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 12 juil. 2007 à 19:46
(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...))
mickadevelop
Messages postés55Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention 4 juin 2010 13 juil. 2007 à 22:48
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.
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 14 juil. 2007 à 10:17
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/
mickadevelop
Messages postés55Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention 4 juin 2010 23 juil. 2007 à 18:07
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
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 24 juil. 2007 à 14:00
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/