Αρχείο κειμένου που εμφανίζεται με την εντολή `cat` σε παράθυρο του xterm.
Στην πληροφορική, **απλό κείμενο** (**plain text**) είναι τα περιεχόμενα ενός απλού σειριακού (sequential) αρχείου όταν διαβάζονται σαν κείμενο, χωρίς να είναι αναγκαία επεξεργασία για την εμφάνισή του, σε αντίθεση με το κείμενο με μορφοποίηση (formatted text).

Η κωδικοποίηση συνήθως είναι ASCII, κάποια από τα παράγωγά της, όπως το ISO/IEC 646 κλπ. ή κάποιες φορές το EBCDIC. 

Το πρότυπο Unicode έχει σήμερα αντικαταστήσει σε μεγάλο βαθμό το ASCII που είχε κωδικούς 7 ή 8 bit.

Χρήση
-----

Ο σκοπός της χρήσης *απλού κειμένου* σήμερα είναι σαν ένας "ελάχιστος κοινός παρονομαστής" που εξασφαλίζει ανεξαρτησία από προγράμματα που απαιτούν τη δική τους ειδική κωδικοποίηση ή μορφοποίηση (με αποτέλεσμα περιορισμούς). Τα αρχεία απλού κειμένου μπορούν να ανοιχτούν, να διαβαστούν και να τροποποιηθούν από τους περισσότερους διορθωτές κειμένου. Παραδείγματα τέτοιων διορθωτών είναι το Σημειωματάριο (στα Windows), το edit (στο DOS), ο ed, ο emacs, ο vi, ο vim, ο Gedit ή ο nano (στο Linux και σε άλλα συστήματα τύπου Unix), το SimpleText (στο Mac OS), ή το TextEdit (στο Mac OS X). Άλλα προγράμματα μπορούν επίσης να διαβάζουν απλό κείμενο.
Το απλό κείμενο μπορεί επίσης να χρησιμοποιηθεί από απλά υπολογιστικά εργαλεία όπως οι εντολές εμφάνισης γραμμών κειμένου `type` (DOS και Windows) και `cat` (Unix), αλλά και από πιο πολύπλοκα προγράμματα, όπως οι φυλλομετρητές Ιστού Lynx και Line Mode Browser.

Τα αρχεία απλού κειμένου επικρατούν στον προγραμματισμό - ένα αρχείο πηγαίου κώδικα που περιέχει εντολές μιας γλώσσας προγραμματισμού είναι σχεδόν πάντα αρχείο απλού κειμένου. Το απλό κείμενο χρησιμοποιείται επίσης συχνά για **αρχεία ρυθμίσεων** (**configuration files**), τα οποία διαβάζονται κατά την εκκίνηση ενός προγράμματος, για αποθηκευμένες ρυθμίσεις.

Το απλό κείμενο ήταν ο πρώτος και πιο διαδεδομένος τρόπος αποστολής e-mail. Τα μηνύματα e-mail με μορφοποίηση HTML συχνά περιλαμβάνουν ένα αυτόματα παραγόμενο αντίγραφο σε απλό κείμενο για λόγους συμβατότητας.

Κωδικοποίηση
------------

### Κωδικοποιήσεις χαρακτήρων

Κύριο λήμμα: Κωδικοποίηση χαρακτήρων
Αρχικά το κείμενο συχνά κωδικοποιούνταν σε ASCII, χρησιμοποιώντας 8 bits για ένα γράμμα ή άλλο χαρακτήρα, κωδικοποιώντας τα 7 bits ώστε να επιτρέπει 128 τιμές, και χρησιμοποιώντας το 8ο σαν bit αθροίσματος ελέγχου (checksum) κατά τη μεταφορά ενός αρχείου. Αυτό επέτρεπε το απλό λατινικό αλφάβητο, κωδικούς ελέγχου, παρενθέσεις και σημεία στίξης.

Όταν τα δεδομένα που μεταφέρονταν απέκτησαν πιο σταθερή μορφή, το 8ο bit σταμάτησε να χρησιμοποιείται σαν άθροισμα ελέγχου και χρησιμοποιήθηκε για την επέκταση του συνόλου των χαρακτήρων κατά άλλους 128 χαρακτήρες. Αυτοί οι μη-πρότυποι χαρακτήρες κωδικοποιούνταν με διαφορετικό τρόπο σε κάθε χώρα, κατά τρόπο που έκανε αδύνατη την κωδικοποίηση πολυγλωσσικών κειμένων. Για παράδειγμα, ένας φυλλομετρητής μπορούσε να εμφανίσει το **¬A** σαν **`** αν χρησιμοποιούσε ένα σύνολο χαρακτήρων στη θέση άλλου. Επίσης, πολλές φορές, κωδικοποιούνταν και με διαφορετικό τρόπο στην ίδια χώρα (για παράδειγμα στην Ελλάδα έχουν χρησιμοποιηθεί, μεταξύ άλλων, οι κωδικοποιήσεις IBM 437 με ελληνικά, ΕΛΟΤ 928, windows-1253 κ.α.).

Όταν ένα πρόγραμμα θέλει να διαβάσει ή να επεξεργαστεί απλά κείμενα, γραμμένα σε αυτή τη μορφή, θα πρέπει να γνωρίζει την κωδικοποίηση που χρησιμοποιήθηκε για να γραφτούν. Κάποια προγράμματα, χρησιμοποιώντας διάφορες τεχνικές και αλγορίθμους, μερικές φορές κατορθώνουν να αντιληφθούν την κωδικοποίηση, αλλά όχι πάντα. Σε αυτήν την περίπτωση ο χρήστης συνήθως θα πρέπει να ξανανοίξει το αρχείο επιλέγοντας από πριν την κωδικοποίηση που πιστεύει ότι έχει χρησιμοποιηθεί (εφόσον το πρόγραμμα υποστηρίζει αυτή τη λειτουργία). Για παράδειγμα ένα αρχείο CSV (που μπορεί να ανοιχτεί με πρόγραμμα επεξεργασίας λογιστικών φύλλων) ή INI ή SRT (που μπορεί να ανοιχτεί με πρόγραμμα επεξεργασίας υπότιτλων ή από πρόγραμμα προβολής ταινιών) θα μπορούσε να έχει δημιουργηθεί από κάποιον που έχει γαλλικά στον υπολογιστή του. Σε αυτήν την περίπτωση το πιθανότερο είναι ότι οι χαρακτήρες πάνω από τη θέση 127 θα περιέχουν γαλλικό κείμενο και η ανάγνωσή του σε υπολογιστή με ελληνικά θα εμφανίζει "αλαμπουρνέζικα". Μερικά προγράμματα, όταν αντιλαμβάνονται ότι πρόκειται για απλό αρχείο κειμένου με κωδικοποίηση 8 bit, ζητάνε από το χρήστη να ορίσει την κωδικοποίηση στην οποία είναι γραμμένο το κείμενο.

Τελικά εμφανίστηκε το Unicode, το οποίο σήμερα επιτρέπει 1.114.112 κωδικούς που μπορούν να χρησιμοποιηθούν για οποιοδήποτε σύγχρονο σύστημα γραφής, καθώς και για πολλά νεκρά συστήματα γραφής, και είναι ευρέως διαδεδομένο. Για παράδειγμα, το Unicode, εκτός από τους λατινικούς χαρακτήρες, κωδικοποιεί τους χαρακτήρες της Κινεζικής, της Εβραϊκής, της Κυριλλικής.

Τα προβλήματα δεν εξαλείφθηκαν καθώς οι μορφές UCS-2 και UTF-16 του Unicode χρησιμοποίησαν την προσθήκη ενός byte order mark (BOM) στην αρχή του κειμένου, το οποίο πολλοί ενσωμάτωσαν και σε κείμενα με άλλες μορφές Unicode, με αποτέλεσμα να "μπερδεύονται" πολλά προγράμματα.

### Κωδικοί ελέγχου

Οι κωδικοί ASCII πριν το κενό (`SPACE` = `32` = `20H`) δεν προορίζονταν για εμφάνιση, αλλά είναι χαρακτήρες ελέγχου (control characters) και έχουν διάφορες σημασίες. Για παράδειγμα, το `NULL` (= `0`, αναφέρεται και σαν `Ctrl-@`) χρησιμοποιείται για τον τερματισμό συμβολοσειρών στη γλώσσα προγραμματισμού C και στους απογόνους της. Ειδικό ενδιαφέρον έχουν οι χαρακτήρες `LF` (= `LINE FEED` = `10` = `0AH`, αλλαγή γραμμής) and `CR` (= `CARRIAGE RETURN` = `13` = `0DH`, επιστροφή φορέα). Τα Windows και το OS/2 απαιτούν την ακολουθία `CR,LF` για την αλλαγή σε νέα γραμμή, ενώ το Unix και τα συγγενή με αυτό λειτουργικά συστήματα χρησιμοποιούν απλά το `LF`, ενώ το Classic Mac OS (αλλά όχι το Mac OS X) χρησιμοποιεί το `CR`. Παλαιότερα αυτή η κατάσταση προκαλούσε μικροπροβλήματα στη μεταφορά μεταξύ συστημάτων Windows και Unix, αλλά σήμερα τα περισσότερα προγράμματα τη χειρίζονται σωστά.

Δείτε επίσης
------------

* Αρχείο κειμένου
* Δυαδικό αρχείο
* Επεξεργαστής κειμένου
* Πηγαίος κώδικας
* MIME Content-type

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| π • σ • ε
Τύποι δεδομένων |
| --- |
|  |
| Χωρίς ερμηνεία | 
Bit · Byte · Trit · Tryte · Λέξη |
|  |
| Αριθμητικοί | 
Ακέραιος · Σταθερής υποδιαστολής · Κινητής υποδιαστολής · Πραγματικός · Μιγαδικός · Bignum · Διάστημα |
|  |
| Κείμενο | 
Χαρακτήρας · Συμβολοσειρά |
|  |
| Δείκτες | 
Διεύθυνση · Αναφορά · Δείκτης συνάρτησης |
|  |
| Σύνθετοι | 
Αλγεβρικός τύπος δεδομένων (γενικευμένος) · Πίνακας · Πίνακας αντιστοίχισης · Κλάση · Λίστα · Αντικείμενο · Τύπος επιλογής · Γινόμενο · Εγγραφή · Σύνολο · Ένωση (με ετικέτες) |
|  |
| Άλλοι | 
Αλήθειας · Bottom type · Συλλογή · Τύπος απαρίθμησης · Εξαίρεση · Τύπος συνάρτησης · Αδιαφανής τύπος δεδομένων · Αναδρομικός τύπος δεδομένων · Σημαφόρος · Stream · Top type · Κλάση τύπου · Unit type · Void |
|  |
| Σχετικά θέματα | 
Αφηρημένος τύπος δεδομένων · Δομή δεδομένων · Interface · Kind · Πρωτογενής τύπος δεδομένων · Υποτύποι · Template · Κατασκευαστής τύπων · Παραμετρικός πολυμορφισμός · Πολυμορφισμός υποτύπων |

 |