Quando si utilizzano file di testo semplici, sopratutto se condivisi fra più persone con sistemi operativi misti (windows, mac e linux) può capitare di incontrare problemi con la delimitazione del carattere di fine riga. I sistemi operativi gestiscono infatti in modi diversi il carattere a capo ASCII, e non tutti i programmi sono in grado di interpretare la convenzione dell’altra famiglia di sistemi operativi.
Nella definizione dei caratteri ASCII esistono 2 diversi caratteri a capo.
Il carattere Chr(10)
Il primo che analizzeremo è il carattere ASCII con codice 10 è spesso scritto anche come \n e chiamato come New Line o NL. in alternativa il carattere ASCII 10 è chiamato anche Line Feed o LF.
Il carattere Chr(13)
Il carattere ASCII con codice 13 è Chiamato Carriage Return o CR
Nei sistemi windows i file sono solitamente delimitati con Carriage Return Line Feed, ovvero con un Chr(13) seguito da un Chr(10), generando così un CRLF.
Anche gli headers HTTP e gli headers delle email sono delimitati con dei CRLF.
Vi è capitato di aprire un file con blocco note di windows e visualizzarlo tutto su una riga, ma poi con un altro editor viene visualizzato correttamente? Questo problema è causato proprio dal carattere a capo, il file probabilmente è delimitato solamente con LF come accade per i sistemi unix e non con CRLF come windows vorrebbe. Gli altri editor sono in grado di capire e adattarsi el solo LF e quindi visualizzano correttamente il documento.
Un po’ di storia – la macchina da scrivere
Questo proviene dai tempi in cui si utilizzava la macchina da scrivere meccanica. Quando premiamo il tasto invio su una macchina da scrivere ci sposteremo alla riga successiva (Line Feed). Finché però non riportiamo manualmente il foglio a inizio riga, continueremo a scrivere dal punto in cui eravamo prima.
Cosa usare quindi come carattere a capo ASCII?
Per questioni di semplicità si può usare Chr(10). Se non avete necessità di aprire i file con il blocco note di windows infatti in linea di massima non dovreste avere alcun problema.
Chr(10) o Char(10)?
Il nome della funzione che ritorna un carattere ASCII a partire dal suo indice è diverso a seconda dei linguaggi di programmazione. Potete consultare la tabella qui sotto per avere un riferimento veloce.
Linguaggio | Line Feed | Carriage Return |
Espressioni regolari (regEx) | \n | \r |
SQL | CHAR(10) | CHAR(13) |
CFML / ColdFusion | Chr(10) | Chr(13) |
Php | Chr(10) | Chr(13) |
Python | Chr(10) | Chr(13) |
Javascript | String.fromCharCode(10) | String.fromCharCode(13) |
Se siete interessati ad altri articoli sui caratteri speciali potete consultare i nostri articoli:
Scrivere i caratteri speciali della tastiera con Alt
Tabella dei caratteri speciali della tastiera italiana
Potete trovare una tabella completa dei caratteri ASCII qui.