JavaScriptben mi a különbség a newline (\n) és a carriage return (\r) karakterek között?
Az egyik kocsivissza, a másik soremelés. Általában ugyanazt csinálja, de a \n-t érdemes használni.
Kis háttérinfó:
Különböző rendszerek különbözően használják (szabvány szerint) az új sor jelet.
Unix, Linux rendszereken \n (x0A)
Mac rendszerben \r (x0D)
Dos/Windows rendszeren \r\n (x0D0A)
Kis történelem. A számítástechnika őskorában a kijelző nem feltétlenül monitor volt, lehetett nyomtató is, illetve gyakran a nyomtatók is csak karaktereket tudtak nyomtatni. Itt viszont fontos volt megkülönböztetni két különböző vezérlőkaraktert:
\r (carriage return=kocsi vissza) Ez csak visszaviszi a nyomtatófejet a sor elejére
\n (line feed / new line = soremelés / új sor) Ez csak a papírt mozgatta egy sorral feljebb, de a nyomtatófej ott maradt ahol volt.
Néhány életszerű példa:
print("1234\n5678");
1234
____5678
print("ooo\r”””");
őőő
~ ~ ~ ~ ~ ~ ~
Ha valaki azt akarta, hogy egy szöveg a következő sor elején folytatódjon, akkor kellett küldeni egy kocsi vissza vezérlőkarakter (\r) majd egy soremelés karaktert (\n). A Windows mind a mai napig őrzi ezt, ez az alapértelmezett új sor vezérlőkarakter kombináció. De néhány Windowsos program a linuxos megoldást is használja. Mert a Linuxnál meg egyszerűsítettek a képleten, és elhagyták a \r karakter használatát és a \n jelentését módosították úgy, hogy az egyben soremelés is és kocsi vissza is. Mac esetén meg pont fordítva egyszerűsítettek, ott a \r karaktert hagyták meg.
A probléma az, hogy alkalmasint egy Linuxos szerverre is kerülhet fel Window alatt készült szövegfájl, illetve pl. egy honlap esetén is lehet a kiszolgáló Linux is, Windows is. Ilyen téren a különböző programok máshogy viselkednek:
1. Néhány windowos program csak a \r\n kombinációt tekinti soremelésnek, ha csak árva \r vagy csak árva \n szerepel, akkor azt ignorálja. Ezzel az a gond, hogy egy Linux, vagy Mac alatt keletkezett többsoros fájl Windows alatt egy egysoros fájlnak látszik.
2. Mindkettőt soremelésnek értelmezik. Ezzel az a gond, hogy a Windowsos szimpla soremelésekből (\r\n) dupla soremelés lesz, ami nem jó.
2. A \r karaktert ignorálják, és csak a \n jelöli a soremelést. Ez legtöbbször jó, csak Mac esetén kavar be, mert ott pont a \r jelenti a sortörést.
3. A \r\n kombinációt kicserélik \n-re, majd az árva \r karaktereket is kicserélik \n-re, és a \n jelenti a soremelést. Még ez a legkorrektebb eljárás.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!