Το διεθνές σύστημα κωδικοποίησης unicode παρέχει. Εμπορικά σήματα και νόμισμα. Κωδικοί χαρακτήρων που χρησιμοποιούνται συχνά

Unicode: UTF-8, UTF-16, UTF-32.

Το Unicode είναι ένα σύνολο γραφικά σύμβολακαι μια μέθοδο για την κωδικοποίησή τους για την επεξεργασία δεδομένων κειμένου από υπολογιστή.

Το Unicode όχι μόνο εκχωρεί έναν μοναδικό κωδικό σε κάθε χαρακτήρα, αλλά και ορίζει διάφορα χαρακτηριστικάαυτός ο χαρακτήρας, για παράδειγμα:

    τύπος χαρακτήρα (κεφαλαίο γράμμα, πεζό γράμμα, αριθμός, σημείο στίξης κ.λπ.)

    χαρακτηριστικά χαρακτήρων (εμφάνιση από αριστερά προς τα δεξιά ή από δεξιά προς τα αριστερά, κενό διάστημα, αλλαγή γραμμής κ.λπ.)

    το αντίστοιχο κεφαλαίο ή πεζό γράμμα (για πεζά και κεφαλαία γράμματα, αντίστοιχα).

    κατάλληλος αριθμητική αξία(για ψηφιακούς χαρακτήρες).

    Πρότυπα UTF (συντομογραφία για Unicode Transformation Format) για την αναπαράσταση χαρακτήρων:

UTF-16: Στις ρυθμίσεις των Windows, την επιτάχυνση, τις συχνές ερωτήσεις των Vista για την αντιπροσώπευση όλων Χαρακτήρες UnicodeΧρησιμοποιείται κωδικοποίηση UTF-16. Στο UTF-16, οι χαρακτήρες αντιπροσωπεύονται ως δύο byte (16 bit). Αυτή η κωδικοποίηση χρησιμοποιείται στα Windows επειδή οι τιμές 16-bit μπορούν να αντιπροσωπεύουν τους χαρακτήρες που αποτελούν τα αλφάβητα των περισσότερων γλωσσών, επιτρέποντας στα προγράμματα να επεξεργάζονται συμβολοσειρές και να υπολογίζουν το μήκος τους πιο γρήγορα. Ωστόσο, τα 16 bit δεν είναι αρκετά για να αναπαραστήσουν τους αλφαβητικούς χαρακτήρες ορισμένων γλωσσών. Για τέτοιες περιπτώσεις, το UTE-16 υποστηρίζει κωδικοποιήσεις "υποκατάστασης", οι οποίες επιτρέπουν την κωδικοποίηση χαρακτήρων σε 32 bit (4 byte). Ωστόσο, υπάρχουν λίγες εφαρμογές που έχουν να αντιμετωπίσουν χαρακτήρες από τέτοιες γλώσσες, επομένως το UTF-16 είναι ένας καλός συμβιβασμός μεταξύ της εξοικονόμησης μνήμης και της ευκολίας προγραμματισμού. Σημειώστε ότι το .NET Framework κωδικοποιεί όλους τους χαρακτήρες χρησιμοποιώντας UTF-16, επομένως χρησιμοποιώντας το UTF-16 σε εφαρμογές WindowsΒελτιώνει την απόδοση και μειώνει την κατανάλωση μνήμης κατά τη μετάδοση συμβολοσειρών μεταξύ εγγενούς και διαχειριζόμενου κώδικα.

UTF-8: Στην κωδικοποίηση UTF-8, διαφορετικοί χαρακτήρες μπορούν να αντιπροσωπεύονται με 1,2,3 ή 4 byte. Οι χαρακτήρες με τιμές μικρότερες από 0x0080 συμπιέζονται σε 1 byte, κάτι που είναι πολύ βολικό για χαρακτήρες που χρησιμοποιούνται στις Ηνωμένες Πολιτείες. Οι χαρακτήρες που ταιριάζουν με τιμές στην περιοχή 0x0080-0x07FF μετατρέπονται σε τιμές 2 byte, κάτι που λειτουργεί καλά με τα ευρωπαϊκά και τα αλφάβητα της Μέσης Ανατολής. Οι χαρακτήρες με μεγαλύτερες τιμές μετατρέπονται σε τιμές 3 byte, βολικό όταν εργάζεστε με γλώσσες της Κεντρικής Ασίας. Τέλος, τα ζεύγη "υποκατάστατα" γράφονται σε μορφή 4 byte. Το UTF-8 είναι μια εξαιρετικά δημοφιλής κωδικοποίηση. Ωστόσο, είναι λιγότερο αποτελεσματικό από το UTF-16 εάν χρησιμοποιούνται συχνά χαρακτήρες με τιμές 0x0800 και άνω.

UTF-32: Στο UTF-32, όλοι οι χαρακτήρες αντιπροσωπεύονται σε 4 byte. Αυτή η κωδικοποίηση είναι βολική για εγγραφή απλούς αλγόριθμουςγια να απαριθμήσετε χαρακτήρες οποιασδήποτε γλώσσας που δεν απαιτούν επεξεργασία των χαρακτήρων που αντιπροσωπεύονται από διαφορετικούς αριθμούς byte Για παράδειγμα, όταν χρησιμοποιείτε το UTF-32, μπορείτε να ξεχάσετε τα "υποκατάστατα", καθώς οποιοσδήποτε χαρακτήρας σε αυτήν την κωδικοποίηση αντιπροσωπεύεται από 4 byte. Είναι σαφές ότι όσον αφορά τη χρήση μνήμης, το UTF-32 απέχει πολύ από το ιδανικό. Επομένως, αυτή η κωδικοποίηση χρησιμοποιείται σπάνια για τη μετάδοση συμβολοσειρών μέσω του δικτύου και την αποθήκευση τους σε αρχεία. Κατά κανόνα, το UTF-32 χρησιμοποιείται ως εσωτερική μορφή για την παρουσίαση δεδομένων σε ένα πρόγραμμα.

UTF-8

Μια ειδική μορφή Unicode (και ISO 10646) που ονομάζεται UTF-8 θα διαδραματίσει όλο και πιο σημαντικό ρόλο στο εγγύς μέλλον. Αυτή η «προερχόμενη» κωδικοποίηση χρησιμοποιεί συμβολοσειρές bytes διαφορετικού μήκους (από ένα έως έξι) για να γράψει χαρακτήρες, οι οποίοι μετατρέπονται σε κωδικούς Unicode χρησιμοποιώντας έναν απλό αλγόριθμο, με μικρότερες συμβολοσειρές που αντιστοιχούν σε πιο κοινούς χαρακτήρες. Το κύριο πλεονέκτημα αυτής της μορφής είναι η συμβατότητά της με το ASCII όχι μόνο ως προς τις τιμές κώδικα, αλλά και ως προς τον αριθμό των bit ανά χαρακτήρα, καθώς ένα byte είναι αρκετό για να κωδικοποιήσει οποιονδήποτε από τους πρώτους 128 χαρακτήρες στο UTF-8 (αν και, για Για παράδειγμα, για τα κυριλλικά γράμματα χρειάζεστε ήδη δύο byte).

Η μορφή UTF-8 επινοήθηκε στις 2 Σεπτεμβρίου 1992 από τους Ken Thompson και Rob Pike και εφαρμόστηκε στο Σχέδιο 9. Το πρότυπο UTF-8 έχει πλέον επισημοποιηθεί στο RFC 3629 και στο ISO/IEC 10646 Παράρτημα Δ.

Για τον σχεδιαστή Ιστού, αυτή η κωδικοποίηση έχει ιδιαίτερη σημασία, καθώς έχει δηλωθεί ως η «τυπική κωδικοποίηση εγγράφων» σε HTML από την έκδοση 4.

Κείμενο που αποτελείται μόνο από χαρακτήρες με αριθμό μικρότερο από 128 μετατρέπεται σε απλό κείμενο ASCII όταν γράφεται σε UTF-8. Αντίθετα, στο κείμενο UTF-8, οποιοδήποτε byte με τιμή μικρότερη από 128 αντιπροσωπεύει έναν χαρακτήρα ASCII με τον ίδιο κωδικό. Οι υπόλοιποι χαρακτήρες Unicode αντιπροσωπεύονται από ακολουθίες μήκους από 2 έως 6 byte (στην πραγματικότητα μόνο έως 4 byte, δεδομένου ότι δεν έχει προγραμματιστεί η χρήση κωδικών μεγαλύτερους από 221), στις οποίες το πρώτο byte είναι πάντα 11xxxxxx και το υπόλοιπο είναι 10xxxxxx .

Με απλά λόγια, στο UTF-8, οι λατινικοί χαρακτήρες, τα σημεία στίξης και οι χαρακτήρες ελέγχου ASCII γράφονται σε κωδικούς US-ASCII και όλοι οι άλλοι χαρακτήρες κωδικοποιούνται χρησιμοποιώντας πολλαπλές οκτάδες με το πιο σημαντικό bit 1. Αυτό έχει δύο εφέ.

    Ακόμα κι αν το πρόγραμμα δεν αναγνωρίζει Unicode, τα λατινικά γράμματα, οι αραβικοί αριθμοί και τα σημεία στίξης θα εμφανίζονται σωστά.

    Εάν τα λατινικά γράμματα και τα απλά σημεία στίξης (συμπεριλαμβανομένων των κενών) καταλαμβάνουν σημαντικό όγκο κειμένου, το UTF-8 παρέχει αύξηση του όγκου σε σύγκριση με το UTF-16.

    Με την πρώτη ματιά, μπορεί να φαίνεται ότι το UTF-16 είναι πιο βολικό, καθώς οι περισσότεροι χαρακτήρες κωδικοποιούνται σε ακριβώς δύο byte. Ωστόσο, αυτό αναιρείται από την ανάγκη υποστήριξης υποκατάστατων ζευγών, τα οποία συχνά ξεχνιούνται κατά τη χρήση του UTF-16, υλοποιώντας μόνο υποστήριξη για χαρακτήρες UCS-2.

Σήμερα θα σας μιλήσουμε για το από πού προέρχονται τα krakozyabr σε έναν ιστότοπο και σε προγράμματα, ποιες κωδικοποιήσεις κειμένου υπάρχουν και ποιες πρέπει να χρησιμοποιηθούν. Ας ρίξουμε μια πιο προσεκτική ματιά στην ιστορία της ανάπτυξής τους, ξεκινώντας από το βασικό ASCII, καθώς και τις εκτεταμένες εκδόσεις του CP866, KOI8-R, Windows 1251 και τελειώνοντας με τις σύγχρονες κωδικοποιήσεις κοινοπραξίας Unicode UTF 16 και 8. Πίνακας περιεχομένων:

  • Εκτεταμένες εκδόσεις των κωδικοποιήσεων Asuka - CP866 και KOI8-R
  • Windows 1251 - Παραλλαγή ASCII και γιατί βγαίνουν τα krakozyabry
Σε κάποιους, αυτές οι πληροφορίες μπορεί να φαίνονται περιττές, αλλά ξέρετε πόσες ερωτήσεις λαμβάνω ειδικά σχετικά με τα ανιχνευόμενα krakozyabrs (μη αναγνώσιμο σύνολο χαρακτήρων). Τώρα θα έχω την ευκαιρία να παραπέμψω όλους στο κείμενο αυτού του άρθρου και να βρω τα δικά μου λάθη. Λοιπόν, ετοιμαστείτε να απορροφήσετε τις πληροφορίες και προσπαθήστε να ακολουθήσετε τη ροή της ιστορίας. ASCII - βασική κωδικοποίηση κειμένου για τα Λατινικά Η ανάπτυξη των κωδικοποιήσεων κειμένου συνέβη ταυτόχρονα με τη διαμόρφωση της βιομηχανίας πληροφορικής και κατά τη διάρκεια αυτής της περιόδου κατάφεραν να υποστούν πολλές αλλαγές. Ιστορικά, όλα ξεκίνησαν με το EBCDIC, το οποίο ήταν μάλλον παράφωνο στη ρωσική προφορά, το οποίο επέτρεψε την κωδικοποίηση γραμμάτων του λατινικού αλφαβήτου, αραβικών αριθμών και σημείων στίξης με χαρακτήρες ελέγχου. Αλλά ακόμα Αφετηρίαγια την ανάπτυξη σύγχρονων κωδικοποιήσεων κειμένου, αξίζει να εξεταστεί το περίφημο ASCII (American Standard Code για πληροφορίεςΑνταλλαγή, η οποία στα ρωσικά προφέρεται συνήθως ως "aski"). Περιγράφει τους πρώτους 128 χαρακτήρες που χρησιμοποιούνται πιο συχνά από αγγλόφωνους χρήστες - λατινικά γράμματα, αραβικούς αριθμούς και σημεία στίξης. Αυτοί οι 128 χαρακτήρες που περιγράφονται στο ASCII περιελάμβαναν επίσης ορισμένους χαρακτήρες υπηρεσιών όπως αγκύλες, σημάδια κατακερματισμού, αστερίσκους κ.λπ. Μάλιστα, μπορείτε να τα δείτε μόνοι σας:
Είναι αυτοί οι 128 χαρακτήρες από την αρχική έκδοση του ASCII που έχουν γίνει το πρότυπο και σε οποιαδήποτε άλλη κωδικοποίηση θα τους βρείτε σίγουρα και θα εμφανίζονται με αυτή τη σειρά. Αλλά το γεγονός είναι ότι με ένα byte πληροφοριών μπορείτε να κωδικοποιήσετε όχι 128, αλλά έως και 256 διαφορετικές έννοιες(δύο στη δύναμη του οκτώ ισούται με 256), επομένως, μετά τη βασική έκδοση του Asuka, εμφανίστηκε μια ολόκληρη σειρά εκτεταμένων κωδικοποιήσεων ASCII, στις οποίες, εκτός από 128 βασικούς χαρακτήρες, ήταν επίσης δυνατή η κωδικοποίηση εθνικών χαρακτήρων κωδικοποίησης (για παράδειγμα, ρωσικά). Εδώ, ίσως αξίζει να πούμε λίγα περισσότερα για τα συστήματα αριθμών που χρησιμοποιούνται στην περιγραφή. Πρώτον, όπως όλοι γνωρίζετε, ένας υπολογιστής λειτουργεί μόνο με αριθμούς στο δυαδικό σύστημα, δηλαδή με μηδενικά και ένα («Άλγεβρα Boole», αν κάποιος τον πήρε σε ινστιτούτο ή σχολείο). Ένα byte αποτελείται από οκτώ bit, καθένα από τα οποία είναι δύναμη δύο, ξεκινώντας από το μηδέν και τελειώνοντας με δύο έως την έβδομη δύναμη:
Δεν είναι δύσκολο να καταλάβουμε ότι όλοι οι πιθανοί συνδυασμοί μηδενικών και μονάδων σε ένα τέτοιο σχέδιο μπορούν να είναι μόνο 256. Η μετατροπή ενός αριθμού από το δυαδικό σύστημα στο δεκαδικό σύστημα είναι αρκετά απλή. Απλά πρέπει να αθροίσετε όλες τις δυνάμεις των δύο με μία πάνω από αυτές. Στο παράδειγμά μας, αυτό αποδεικνύεται ότι είναι 1 (2 στη δύναμη του μηδέν) συν 8 (δύο στη δύναμη του 3), συν 32 (δύο στην πέμπτη δύναμη), συν 64 (στην έκτη δύναμη), συν 128 (στην έβδομη δύναμη). Το σύνολο είναι 233 σε δεκαδικό συμβολισμό. Όπως μπορείτε να δείτε, όλα είναι πολύ απλά. Αλλά αν κοιτάξετε προσεκτικά τον πίνακα με χαρακτήρες ASCII, θα δείτε ότι αντιπροσωπεύονται σε δεκαεξαδική κωδικοποίηση. Για παράδειγμα, αγώνες «αστερίσκος» στο Άσκι δεκαεξαδικός αριθμός 2Α. Πιθανότατα το γνωρίζετε δεκαεξαδικό σύστημαΟι αριθμοί χρησιμοποιούνται εκτός από τους αραβικούς αριθμούς και τα λατινικά γράμματα από το A (σημαίνει δέκα) έως το F (σημαίνει δεκαπέντε). Λοιπόν, για μετάφραση δυάδικος αριθμόςσε δεκαεξαδικό καταφεύγουν στην παρακάτω απλή και οπτική μέθοδο. Κάθε byte πληροφοριών χωρίζεται σε δύο μέρη των τεσσάρων bit, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης. Οτι. σε κάθε μισό byte δυάδικος κώδικαςμόνο δεκαέξι τιμές μπορούν να κωδικοποιηθούν (δύο έως την τέταρτη ισχύ), οι οποίες μπορούν εύκολα να αναπαρασταθούν ως δεκαεξαδικός αριθμός. Επιπλέον, στο αριστερό μισό του byte οι μοίρες θα πρέπει να μετρηθούν ξανά ξεκινώντας από το μηδέν και όχι όπως φαίνεται στο στιγμιότυπο οθόνης. Ως αποτέλεσμα, μέσω απλών υπολογισμών, παίρνουμε ότι ο αριθμός Ε9 είναι κωδικοποιημένος στο στιγμιότυπο οθόνης. Ελπίζω ότι η πορεία του συλλογισμού μου και η λύση αυτού του γρίφου ήταν σαφής για εσάς. Λοιπόν, τώρα ας συνεχίσουμε, στην πραγματικότητα, μιλώντας για κωδικοποιήσεις κειμένου. Εκτεταμένες εκδόσεις κωδικοποιήσεων Aska - CP866 και KOI8-R με ψευδογραφικά Έτσι, αρχίσαμε να μιλάμε για το ASCII, το οποίο ήταν σαν το σημείο εκκίνησης για την ανάπτυξη όλων των σύγχρονων κωδικοποιήσεων (Windows 1251, Unicode, UTF 8). Αρχικά, περιείχε μόνο 128 χαρακτήρες του λατινικού αλφαβήτου, αραβικούς αριθμούς και κάτι άλλο, αλλά στην εκτεταμένη έκδοση κατέστη δυνατή η χρήση και των 256 τιμών που μπορούν να κωδικοποιηθούν σε ένα byte πληροφοριών. Εκείνοι. Κατέστη δυνατή η προσθήκη συμβόλων γραμμάτων της γλώσσας σας στο Aski. Εδώ θα χρειαστεί να παρεκκλίνουμε για άλλη μια φορά για να εξηγήσουμε γιατί χρειάζονται καθόλου κωδικοποιήσεις κειμένου και γιατί είναι τόσο σημαντικό. Οι χαρακτήρες στην οθόνη του υπολογιστή σας σχηματίζονται με βάση δύο πράγματα - σύνολα διανυσματικών σχημάτων (παραστάσεων) όλων των ειδών χαρακτήρων (βρίσκονται σε αρχεία με γραμματοσειρές που είναι εγκατεστημένες στον υπολογιστή σας) και κώδικα που σας επιτρέπει να βγάλετε ακριβώς αυτό από αυτό το σύνολο διανυσματικών σχημάτων (αρχείο γραμματοσειράς). σύμβολο που θα πρέπει να εισαχθεί στη σωστή θέση. Είναι σαφές ότι οι ίδιες οι γραμματοσειρές είναι υπεύθυνες για τα διανυσματικά σχήματα, αλλά το λειτουργικό σύστημα και τα προγράμματα που χρησιμοποιούνται σε αυτό είναι υπεύθυνα για την κωδικοποίηση. Εκείνοι. οποιοδήποτε κείμενο στον υπολογιστή σας θα είναι ένα σύνολο byte, καθένα από τα οποία κωδικοποιεί έναν μόνο χαρακτήρα αυτού του κειμένου. Το πρόγραμμα που εμφανίζει αυτό το κείμενο στην οθόνη (επεξεργαστής κειμένου, πρόγραμμα περιήγησης κ.λπ.), κατά την ανάλυση του κώδικα, διαβάζει την κωδικοποίηση του επόμενου χαρακτήρα και αναζητά την αντίστοιχη διανυσματική φόρμα στο το απαιτούμενο αρχείογραμματοσειρά που είναι συνδεδεμένη για την εμφάνιση αυτού του εγγράφου κειμένου. Όλα είναι απλά και μπανάλ. Αυτό σημαίνει ότι για να κωδικοποιήσουμε οποιονδήποτε χαρακτήρα χρειαζόμαστε (για παράδειγμα, από το εθνικό αλφάβητο), πρέπει να πληρούνται δύο προϋποθέσεις - η διανυσματική μορφή αυτού του χαρακτήρα πρέπει να είναι στη γραμματοσειρά που χρησιμοποιείται και αυτός ο χαρακτήρας θα μπορούσε να κωδικοποιηθεί σε εκτεταμένες κωδικοποιήσεις ASCII στο ένα byte. Επομένως, υπάρχει μια ολόκληρη δέσμη τέτοιων επιλογών. Μόνο για την κωδικοποίηση χαρακτήρων της ρωσικής γλώσσας, υπάρχουν πολλές ποικιλίες εκτεταμένων Aska. Για παράδειγμα, εμφανίστηκε αρχικά το CP866, το οποίο είχε τη δυνατότητα να χρησιμοποιεί χαρακτήρες από το ρωσικό αλφάβητο και ήταν μια εκτεταμένη έκδοση του ASCII. Εκείνοι. αυτήν πάνω μέροςσυνέπεσε εντελώς με τη βασική έκδοση του Asuka (128 λατινικοί χαρακτήρες, αριθμοί και άλλα χάλια), η οποία παρουσιάζεται στο στιγμιότυπο οθόνης ακριβώς από πάνω, αλλά τώρα Κάτω μέροςΟι πίνακες με κωδικοποίηση CP866 είχαν τη μορφή που φαίνεται στο στιγμιότυπο οθόνης ακριβώς παρακάτω και σας επέτρεπαν να κωδικοποιήσετε άλλους 128 χαρακτήρες (ρωσικά γράμματα και κάθε είδους ψευδογραφικά):
Βλέπετε, στη δεξιά στήλη οι αριθμοί ξεκινούν με 8, γιατί... Οι αριθμοί από το 0 έως το 7 αναφέρονται στο βασικό μέρος του ASCII (δείτε το πρώτο στιγμιότυπο οθόνης). Οτι. το ρωσικό γράμμα "M" στο CP866 θα έχει τον κωδικό 9С (βρίσκεται στη διασταύρωση αντίστοιχες γραμμέςαπό το 9 και μια στήλη με τον αριθμό C στο δεκαεξαδικό σύστημα αριθμών), η οποία μπορεί να γραφτεί σε ένα byte πληροφοριών και εάν έχετε κατάλληλη γραμματοσειρά με ρωσικούς χαρακτήρες, αυτό το γράμμα θα εμφανίζεται στο κείμενο χωρίς κανένα πρόβλημα. Από πού προήλθαν τόσα ψευδο-γραφικά στο CP866; Το όλο θέμα εδώ είναι ότι αυτή η κωδικοποίηση για το ρωσικό κείμενο αναπτύχθηκε εκείνα τα δύσκολα χρόνια που δεν υπήρχε τέτοιος πολλαπλασιασμός γραφικών λειτουργικά συστήματαόπως τώρα. Και στο Dosa και σε παρόμοια λειτουργικά συστήματα κειμένου, τα ψευδογραφικά στοιχεία κατέστησαν δυνατή τουλάχιστον με κάποιο τρόπο τη διαφοροποίηση του σχεδιασμού των κειμένων, και επομένως το CP866 και όλα τα άλλα όμοιά του από την κατηγορία των εκτεταμένων εκδόσεων του Asuka αφθονούν σε αυτό. Το CP866 διανεμήθηκε από την IBM, αλλά επιπλέον αυτού, αναπτύχθηκε ένας αριθμός κωδικοποιήσεων για χαρακτήρες ρωσικής γλώσσας, για παράδειγμα, το KOI8-R μπορεί να ταξινομηθεί ως του ίδιου τύπου (εκτεταμένο ASCII):
Η αρχή της λειτουργίας του παραμένει η ίδια με αυτή του CP866 που περιγράφηκε λίγο νωρίτερα - κάθε χαρακτήρας κειμένου κωδικοποιείται από ένα μόνο byte. Το στιγμιότυπο οθόνης δείχνει το δεύτερο μισό του πίνακα KOI8-R, επειδή το πρώτο ημίχρονο είναι απολύτως συνεπές με το βασικό Asuka, το οποίο φαίνεται στο πρώτο στιγμιότυπο οθόνης αυτού του άρθρου. Μεταξύ των χαρακτηριστικών της κωδικοποίησης KOI8-R, μπορεί να σημειωθεί ότι τα ρωσικά γράμματα στον πίνακά του δεν μπαίνουν αλφαβητική σειρά, όπως, για παράδειγμα, έκαναν στο CP866. Αν κοιτάξετε το πρώτο στιγμιότυπο οθόνης (του βασικού μέρους, το οποίο περιλαμβάνεται σε όλες τις εκτεταμένες κωδικοποιήσεις), θα παρατηρήσετε ότι στο KOI8-R τα ρωσικά γράμματα βρίσκονται στα ίδια κελιά του πίνακα με τα αντίστοιχα γράμματα του λατινικού αλφαβήτου από το πρώτο μέρος του πίνακα. Αυτό έγινε για τη διευκόλυνση της εναλλαγής από τους ρωσικούς σε λατινικούς χαρακτήρες, απορρίπτοντας μόνο ένα bit (δύο στην έβδομη δύναμη ή 128). Windows 1251 - μοντέρνα έκδοση ASCII και γιατί υπάρχουν απατεώνες Η περαιτέρω ανάπτυξη των κωδικοποιήσεων κειμένου οφειλόταν στο γεγονός ότι τα λειτουργικά συστήματα γραφικών κέρδιζαν δημοτικότητα και η ανάγκη χρήσης ψευδογραφικών στοιχείων σε αυτά εξαφανίστηκε με την πάροδο του χρόνου. Ως αποτέλεσμα, προέκυψε μια ολόκληρη ομάδα που, στην ουσία, εξακολουθούσαν να είναι εκτεταμένες εκδόσεις του Asuka (ένας χαρακτήρας κειμένου κωδικοποιείται με μόνο ένα byte πληροφοριών), αλλά χωρίς τη χρήση ψευδογραφικών συμβόλων. Ανήκαν στις λεγόμενες κωδικοποιήσεις ANSI, οι οποίες αναπτύχθηκαν από το Αμερικανικό Ινστιτούτο Προτύπων. Στην κοινή γλώσσα, το όνομα Κυριλλικό χρησιμοποιήθηκε επίσης για την έκδοση με υποστήριξη ρωσικής γλώσσας. Ένα παράδειγμα αυτού θα ήταν τα Windows 1251. Διέφερε ευνοϊκά από τα προηγούμενα χρησιμοποιημένα CP866 και KOI8-R στο ότι τη θέση των ψευδογραφικών συμβόλων σε αυτό πήραν τα σύμβολα της ρωσικής τυπογραφίας που λείπουν (εκτός από το σημάδι τονισμού), καθώς και τα σύμβολα που χρησιμοποιούνται σε σλαβικές γλώσσες κοντά στο Ρωσικά (Ουκρανικά, Λευκορωσικά, κ.λπ.). ):
Λόγω μιας τέτοιας αφθονίας κωδικοποιήσεων ρωσικής γλώσσας, κατασκευαστών γραμματοσειρών και κατασκευαστών λογισμικόΕίχα συνεχώς πονοκέφαλο και εσείς και εγώ, αγαπητοί αναγνώστες, συχνά αντιμετωπίζαμε προβλήματα με τα ίδια περιβόητα σφάλματα όταν υπήρχε σύγχυση με την έκδοση που χρησιμοποιήθηκε στο κείμενο. Πολύ συχνά εμφανίζονταν κατά την αποστολή και λήψη μηνυμάτων μέσω e-mail, γεγονός που οδήγησε στη δημιουργία πολύ περίπλοκων πινάκων μετατροπής, οι οποίοι, στην πραγματικότητα, δεν μπορούσαν να λύσουν καθόλου αυτό το πρόβλημα και οι χρήστες συχνά χρησιμοποιούσαν μεταγραφή για αλληλογραφία Λατινικά γράμματαγια να αποφύγετε τις περιβόητες ασυναρτησίες κατά τη χρήση ρωσικών κωδικοποιήσεων όπως CP866, KOI8-R ή Windows 1251. Στην πραγματικότητα, το αποτέλεσμα ήταν τα krakozyabr που εμφανίζονται αντί για το ρωσικό κείμενο λανθασμένη χρήσηκωδικοποιήσεις αυτής της γλώσσας, το οποίο δεν ταιριάζει με αυτό στο οποίο κωδικοποιήθηκε αρχικά το μήνυμα κειμένου. Ας πούμε ότι εάν προσπαθήσετε να εμφανίσετε χαρακτήρες κωδικοποιημένους με χρήση CP866 χρησιμοποιώντας τον πίνακα κωδικών των Windows 1251, τότε θα εμφανιστούν αυτές οι ίδιες ασυναρτησίες (ένα σύνολο χαρακτήρων χωρίς νόημα), αντικαθιστώντας πλήρως το κείμενο του μηνύματος. Μια παρόμοια κατάσταση προκύπτει πολύ συχνά κατά τη δημιουργία και τη ρύθμιση ιστότοπων, φόρουμ ή ιστολογίων, όταν το κείμενο με ρωσικούς χαρακτήρες αποθηκεύεται κατά λάθος σε λάθος κωδικοποίηση που χρησιμοποιείται στον ιστότοπο από προεπιλογή ή σε λάθος πρόγραμμα επεξεργασίας κειμένου, το οποίο προσθέτει ένα αόρατο gag στον κώδικα με γυμνό μάτι. Στο τέλος, πολλοί άνθρωποι κουράστηκαν από αυτή την κατάσταση με πολλές κωδικοποιήσεις και διαρκώς τρυπώντας χάλια, και εμφανίστηκαν οι προϋποθέσεις για τη δημιουργία μιας νέας καθολικής παραλλαγής που θα αντικαθιστούσε όλες τις υπάρχουσες και θα έλυνε τελικά το πρόβλημα με την εμφάνιση αδιάβαστων κειμένων. Επιπλέον, υπήρχε το πρόβλημα γλωσσών όπως τα κινέζικα, όπου υπήρχαν πολύ περισσότεροι γλωσσικοί χαρακτήρες από 256. Unicode (Unicode) - καθολική Κωδικοποιήσεις UTF 8, 16 και 32 Αυτοί οι χιλιάδες χαρακτήρες της ομάδας γλωσσών της Νοτιοανατολικής Ασίας δεν θα μπορούσαν ενδεχομένως να περιγραφούν σε ένα byte πληροφοριών που διατέθηκε για την κωδικοποίηση χαρακτήρων σε εκτεταμένες εκδόσεις του ASCII. Ως αποτέλεσμα, δημιουργήθηκε μια κοινοπραξία που ονομάζεται Unicode (Unicode Consortium) με τη συνεργασία πολλών ηγετών της βιομηχανίας πληροφορικής (εκείνων που παράγουν λογισμικό, που κωδικοποιούν υλικό, που δημιουργούν γραμματοσειρές) που ενδιαφέρθηκαν για την εμφάνιση μιας καθολικής κωδικοποίησης κειμένου. Η πρώτη παραλλαγή που κυκλοφόρησε υπό την αιγίδα της Unicode Consortium ήταν η UTF 32. Ο αριθμός στο όνομα κωδικοποίησης σημαίνει τον αριθμό των bit που χρησιμοποιούνται για την κωδικοποίηση ενός χαρακτήρα. 32 bit ισούται με 4 byte πληροφοριών που θα χρειαστούν για την κωδικοποίηση ενός μεμονωμένου χαρακτήρα στη νέα καθολική κωδικοποίηση UTF. Ως αποτέλεσμα, το ίδιο αρχείο με κείμενο κωδικοποιημένο στην εκτεταμένη έκδοση του ASCII και σε UTF-32, στην τελευταία περίπτωση, θα έχει μέγεθος (βάρος) τέσσερις φορές μεγαλύτερο. Αυτό είναι κακό, αλλά τώρα έχουμε την ευκαιρία να κωδικοποιήσουμε χρησιμοποιώντας UTF έναν αριθμό χαρακτήρων ίσο με δύο προς τη δύναμη τριάντα δευτερολέπτων (δισεκατομμύρια χαρακτήρες που θα καλύψουν οποιαδήποτε πραγματικά απαραίτητη τιμή με ένα κολοσσιαίο περιθώριο). Αλλά για πολλές χώρες με γλώσσες της ευρωπαϊκής ομάδας αυτό μεγάλο ποσόΔεν χρειαζόταν καθόλου η χρήση χαρακτήρων στην κωδικοποίηση, ωστόσο, όταν χρησιμοποιούσαν το UTF-32, δεν θα είχαν λάβει ποτέ τετραπλάσια αύξηση στο βάρος των εγγράφων κειμένου, και ως αποτέλεσμα, αύξηση του όγκου της κίνησης στο Διαδίκτυο και της όγκο των αποθηκευμένων δεδομένων. Αυτά είναι πολλά, και κανείς δεν μπορούσε να αντέξει τέτοια σπατάλη. Ως αποτέλεσμα της ανάπτυξης του Unicode, εμφανίστηκε το UTF-16, το οποίο αποδείχθηκε τόσο επιτυχημένο που υιοθετήθηκε από προεπιλογή ως ο βασικός χώρος για όλους τους χαρακτήρες που χρησιμοποιούμε. Χρησιμοποιεί δύο byte για την κωδικοποίηση ενός χαρακτήρα. Ας δούμε πώς φαίνεται αυτό το πράγμα. Στο λειτουργικό σύστημα Windows, μπορείτε να ακολουθήσετε τη διαδρομή "Έναρξη" - "Προγράμματα" - "Αξεσουάρ" - "Εργαλεία συστήματος" - "Πίνακας χαρακτήρων". Ως αποτέλεσμα, θα ανοίξει ένας πίνακας με διανυσματικά σχήματαόλες οι γραμματοσειρές που είναι εγκατεστημένες στο σύστημά σας. Εάν επιλέξετε σε " Επιπλέον επιλογές» σύνολο χαρακτήρων Unicode, μπορείτε να δείτε για κάθε γραμματοσειρά ξεχωριστά ολόκληρο το φάσμα των χαρακτήρων που περιλαμβάνονται σε αυτήν. Παρεμπιπτόντως, κάνοντας κλικ σε οποιοδήποτε από αυτά, μπορείτε να δείτε τον κωδικό δύο byte του σε μορφή UTF-16, που αποτελείται από τέσσερα δεκαεξαδικά ψηφία: Πόσοι χαρακτήρες μπορούν να κωδικοποιηθούν στο UTF-16 χρησιμοποιώντας 16 bit; 65.536 (δύο στη δύναμη του δεκαέξι) και αυτός είναι ο αριθμός που υιοθετήθηκε ως ο βασικός χώρος στο Unicode. Επιπλέον, υπάρχουν τρόποι κωδικοποίησης περίπου δύο εκατομμυρίων χαρακτήρων χρησιμοποιώντας το, αλλά περιορίζονταν σε έναν εκτεταμένο χώρο ενός εκατομμυρίου χαρακτήρων κειμένου. Αλλά ακόμη και αυτή η επιτυχημένη έκδοση της κωδικοποίησης Unicode δεν έφερε μεγάλη ικανοποίηση σε όσους έγραψαν, για παράδειγμα, προγράμματα μόνο σε αγγλική γλώσσα, γιατί μετά τη μετάβαση από την εκτεταμένη έκδοση του ASCII στο UTF-16, το βάρος των εγγράφων διπλασιάστηκε (ένα byte ανά χαρακτήρα στο Aski και δύο byte ανά τον ίδιο χαρακτήρα στο UTF-16). Ακριβώς για να ικανοποιηθούν όλοι και τα πάντα στην κοινοπραξία Unicode αποφασίστηκε να καταλήξει σε μια κωδικοποίηση μεταβλητού μήκους. Ονομάστηκε UTF-8. Παρά το οκτώ στο όνομα, στην πραγματικότητα έχει μεταβλητό μήκος, δηλ. Κάθε χαρακτήρας κειμένου μπορεί να κωδικοποιηθεί σε μια ακολουθία μήκους ενός έως έξι byte. Στην πράξη, το UTF-8 χρησιμοποιεί μόνο το εύρος από ένα έως τέσσερα byte, γιατί πέρα ​​από τέσσερα byte κώδικα δεν είναι πλέον ούτε θεωρητικά δυνατό να φανταστεί κανείς οτιδήποτε. Όλοι οι λατινικοί χαρακτήρες σε αυτό κωδικοποιούνται σε ένα byte, όπως στο παλιό καλό ASCII. Αυτό που είναι αξιοσημείωτο είναι ότι στην περίπτωση κωδικοποίησης μόνο του λατινικού αλφαβήτου, ακόμη και εκείνα τα προγράμματα που δεν καταλαβαίνουν Unicode θα εξακολουθούν να διαβάζουν ό,τι είναι κωδικοποιημένο στο YTF-8. Εκείνοι. το βασικό μέρος της Asuka απλώς μεταφέρθηκε σε αυτή τη δημιουργία της κοινοπραξίας Unicode. Οι κυριλλικοί χαρακτήρες στο UTF-8 κωδικοποιούνται σε δύο byte και, για παράδειγμα, οι γεωργιανοί - σε τρία byte. Η κοινοπραξία Unicode, αφού δημιούργησε τα UTF 16 και 8, έλυσε το κύριο πρόβλημα - τώρα έχουμε έναν ενιαίο χώρο κώδικα στις γραμματοσειρές μας. Και τώρα οι κατασκευαστές τους μπορούν να το γεμίσουν μόνο με διανυσματικές μορφές χαρακτήρων κειμένου με βάση τα δυνατά τους σημεία και τις δυνατότητές τους. Στον "Πίνακα χαρακτήρων" παραπάνω μπορείτε να δείτε ότι διαφορετικές γραμματοσειρές υποστηρίζουν διαφορετικούς αριθμούς χαρακτήρων. Ορισμένες γραμματοσειρές πλούσιες σε Unicode μπορεί να είναι αρκετά βαριές. Αλλά τώρα διαφέρουν όχι στο γεγονός ότι δημιουργήθηκαν για διαφορετικές κωδικοποιήσεις, αλλά στο γεγονός ότι ο κατασκευαστής της γραμματοσειράς έχει συμπληρώσει ή δεν έχει συμπληρώσει πλήρως τον ενιαίο χώρο κώδικα με ορισμένες διανυσματικές φόρμες. Krakozyabry αντί για ρωσικά γράμματα - πώς να διορθώσετε Ας δούμε τώρα πώς εμφανίζεται το krakozyabry αντί για κείμενο ή, με άλλα λόγια, πώς επιλέγεται η σωστή κωδικοποίηση για το ρωσικό κείμενο. Στην πραγματικότητα, ορίζεται στο πρόγραμμα στο οποίο δημιουργείτε ή επεξεργάζεστε αυτό ακριβώς το κείμενο ή τον κώδικα χρησιμοποιώντας τμήματα κειμένου. Για την επεξεργασία και τη δημιουργία αρχείων κειμένου, προσωπικά χρησιμοποιώ έναν πολύ καλό, κατά τη γνώμη μου, επεξεργαστή Html και PHP Notepad++. Ωστόσο, μπορεί επίσης να επισημάνει τη σύνταξη μια καλή εκατόγλώσσες προγραμματισμού και σήμανσης, και έχει επίσης τη δυνατότητα να επεκταθεί χρησιμοποιώντας πρόσθετα. Ανάγνωση λεπτομερής ανασκόπησηαυτό το υπέροχο πρόγραμμα στον σύνδεσμο που παρέχεται. Στο επάνω μενού του Notepad++ υπάρχει ένα στοιχείο "Κωδικοποιήσεις", όπου θα έχετε την ευκαιρία να μετατρέψετε μια υπάρχουσα επιλογή σε αυτήν που χρησιμοποιείται από προεπιλογή στον ιστότοπό σας:
Στην περίπτωση ενός ιστότοπου σε Joomla 1.5 και άνω, καθώς και σε περίπτωση ιστολογίου στο WordPress, θα πρέπει να επιλέξετε την επιλογή UTF 8 χωρίς BOM για να αποφύγετε την εμφάνιση ρωγμών. Τι είναι το πρόθεμα BOM; Το γεγονός είναι ότι όταν ανέπτυξαν την κωδικοποίηση YUTF-16, για κάποιο λόγο αποφάσισαν να επισυνάψουν σε αυτήν κάτι όπως η δυνατότητα εγγραφής του κώδικα χαρακτήρων τόσο με άμεση σειρά (για παράδειγμα, 0A15) όσο και αντίστροφα (150A) . Και για να καταλάβουν τα προγράμματα με ποια σειρά πρέπει να διαβάζουν τους κωδικούς, εφευρέθηκε το BOM (Byte Order Mark ή, με άλλα λόγια, υπογραφή), το οποίο εκφράστηκε με την προσθήκη τριών επιπλέον byte στην αρχή των εγγράφων. Στην κωδικοποίηση UTF-8, δεν προβλέπονταν BOM στην κοινοπραξία Unicode, και επομένως η προσθήκη μιας υπογραφής (αυτά τα περιβόητα επιπλέον τρία byte στην αρχή του εγγράφου) απλώς εμποδίζει ορισμένα προγράμματα να διαβάσουν τον κώδικα. Επομένως, κατά την αποθήκευση αρχείων σε UTF, πρέπει πάντα να επιλέγουμε την επιλογή χωρίς BOM (χωρίς υπογραφή). Έτσι, θα προστατεύσετε τον εαυτό σας εκ των προτέρων από το σέρνοντας έξω από τα krakozyabrs. Αυτό που είναι αξιοσημείωτο είναι ότι ορισμένα προγράμματα στα Windows δεν μπορούν να το κάνουν αυτό (δεν μπορούν να αποθηκεύσουν κείμενο στο UTF-8 χωρίς BOM), για παράδειγμα, το ίδιο περιβόητο Σημειωματάριο των Windows. Αποθηκεύει το έγγραφο σε UTF-8, αλλά εξακολουθεί να προσθέτει την υπογραφή (τρία επιπλέον byte) στην αρχή του. Επιπλέον, αυτά τα byte θα είναι πάντα τα ίδια - διαβάστε τον κώδικα με άμεση σειρά. Αλλά στους διακομιστές, λόγω αυτού του μικρού πράγματος, μπορεί να προκύψει ένα πρόβλημα - θα βγουν απατεώνες. Επομένως, σε καμία περίπτωση μην χρησιμοποιείτε το συνηθισμένο Σημειωματάριο των Windowsγια να επεξεργαστείτε έγγραφα στον ιστότοπό σας εάν δεν θέλετε να εμφανιστούν ρωγμές. Τα καλύτερα και τα περισσότερα απλή επιλογήΝομίζω ότι έχει ήδη αναφερθεί Επεξεργαστής σημειωματάριων++, το οποίο πρακτικά δεν έχει μειονεκτήματα και αποτελείται μόνο από πλεονεκτήματα. Στο Notepad++, όταν επιλέγετε μια κωδικοποίηση, θα έχετε την επιλογή να μετατρέψετε κείμενο σε κωδικοποίηση UCS-2, η οποία είναι πολύ κοντά στη φύση του με το πρότυπο Unicode. Επίσης στο Σημειωματάριο θα είναι δυνατή η κωδικοποίηση κειμένου σε ANSI, δηλ. σε σχέση με τη ρωσική γλώσσα, αυτό θα είναι τα Windows 1251, τα οποία ήδη περιγράψαμε παραπάνω. Από πού προέρχονται αυτές οι πληροφορίες; Είναι καταχωρημένο στο μητρώο του λειτουργικού σας συστήματος Windows - ποια κωδικοποίηση να επιλέξετε στην περίπτωση του ANSI, ποια να επιλέξετε στην περίπτωση OEM (για τη ρωσική γλώσσα θα είναι CP866). Εάν ορίσετε άλλη προεπιλεγμένη γλώσσα στον υπολογιστή σας, τότε αυτές οι κωδικοποιήσεις θα αντικατασταθούν με παρόμοιες από την κατηγορία ANSI ή OEM για την ίδια γλώσσα. Αφού αποθηκεύσετε το έγγραφο στο Notepad++ στην κωδικοποίηση που χρειάζεστε ή ανοίξετε το έγγραφο από τον ιστότοπο για επεξεργασία, θα μπορείτε να δείτε το όνομά του στην κάτω δεξιά γωνία του προγράμματος επεξεργασίας: Για αποφυγή σύγχυσης, εκτός από τις ενέργειες που περιγράφονται παραπάνω , θα είναι χρήσιμο να γράψετε στην κεφαλίδα του πηγαίος κώδικαςόλες οι σελίδες του ιστότοπου πληροφορίες σχετικά με αυτήν ακριβώς την κωδικοποίηση, έτσι ώστε να μην υπάρχει σύγχυση στον διακομιστή ή στον τοπικό κεντρικό υπολογιστή. Γενικά, όλες οι γλώσσες σήμανσης υπερκειμένου εκτός από το Html χρησιμοποιούν μια ειδική δήλωση xml, η οποία καθορίζει την κωδικοποίηση κειμένου.< ? xml version= "1.0" encoding= "windows-1251" ? >Πριν αναλύσει τον κώδικα, το πρόγραμμα περιήγησης γνωρίζει ποια έκδοση χρησιμοποιείται και πώς ακριβώς χρειάζεται να ερμηνεύσει τους κωδικούς χαρακτήρων αυτής της γλώσσας. Αλλά αυτό που είναι αξιοσημείωτο είναι ότι εάν αποθηκεύσετε το έγγραφο στο προεπιλεγμένο Unicode, τότε αυτή η δήλωση xml μπορεί να παραλειφθεί (η κωδικοποίηση θα θεωρείται UTF-8 εάν δεν υπάρχει BOM ή UTF-16 εάν υπάρχει BOM). Στην περίπτωση εγγράφου Γλώσσα HTMLΓια την ένδειξη της κωδικοποίησης, χρησιμοποιείται το στοιχείο Meta, το οποίο τοποθετείται μεταξύ των ετικετών Head ανοίγματος και κλεισίματος:< head> . . . < meta charset= "utf-8" > . . . < / head>Αυτή η καταχώρηση είναι αρκετά διαφορετική από αυτή που υιοθετήθηκε στο πρότυπο στο Html 4.01, αλλά συμμορφώνεται πλήρως με το νέο πρότυπο Html 5 που εισάγεται σταδιακά και θα γίνει πλήρως κατανοητό σωστά από όλα τα προγράμματα περιήγησης που χρησιμοποιούνται αυτήν τη στιγμή. Θεωρητικά, ένα στοιχείο Meta με ένδειξη Κωδικοποιήσεις HTMLΘα ήταν καλύτερο να τοποθετήσετε το έγγραφο όσο πιο ψηλά γίνεται στην κεφαλίδα του εγγράφου, έτσι ώστε τη στιγμή που θα συναντήσετε τον πρώτο χαρακτήρα του κειμένου που δεν είναι από το βασικό ANSI (που θα διαβάζεται πάντα σωστά και σε οποιαδήποτε παραλλαγή), το πρόγραμμα περιήγησης θα πρέπει να έχει ήδη πληροφορίες σχετικά με τον τρόπο ερμηνείας των κωδικών αυτών των χαρακτήρων. Σύνδεσμος στο πρώτο

Το Unicode είναι πολύ μεγάλο και πολύπλοκος κόσμος, επειδή το πρότυπο επιτρέπει όχι λιγότερο από την αναπαράσταση και την εργασία σε έναν υπολογιστή με όλα τα κύρια σενάρια του κόσμου. Ορισμένα συστήματα γραφής υπάρχουν για περισσότερα από χίλια χρόνια, με πολλά από αυτά να αναπτύσσονται σχεδόν ανεξάρτητα το ένα από το άλλο διαφορετικές γωνίεςειρήνη. Οι άνθρωποι έχουν καταλήξει σε τόσα πολλά πράγματα και συχνά είναι τόσο διαφορετικοί μεταξύ τους που ο συνδυασμός τους σε ένα ενιαίο πρότυπο ήταν ένα εξαιρετικά δύσκολο και φιλόδοξο έργο.

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

Σε αυτό το άρθρο θα μιλήσουμε για τις βασικές αρχές του Unicode και θα αναδείξουμε αυτές τις σημαντικές πρακτικές ερωτήσεις, που σίγουρα θα συναντήσουν οι προγραμματιστές στο δικό τους καθημερινή εργασία.

Γιατί χρειαζόταν το Unicode; Πριν από την εμφάνιση του Unicode, οι κωδικοποιήσεις ενός byte χρησιμοποιούνταν σχεδόν καθολικά, στις οποίες το όριο μεταξύ των ίδιων των χαρακτήρων, η αναπαράστασή τους στη μνήμη του υπολογιστή και η εμφάνιση τους στην οθόνη ήταν αρκετά αυθαίρετα. Εάν έχετε δουλέψει με το ένα ή το άλλο ΕΘΝΙΚΗ ΓΛΩΣΣΑ, τότε το σύστημά σας είχε εγκαταστήσει τις κατάλληλες γραμματοσειρές κωδικοποίησης που επέτρεπαν τη σχεδίαση των byte από το δίσκο στην οθόνη με τρόπο που να είχε νόημα για τον χρήστη.

Εάν εκτυπώσατε σε εκτυπωτή αρχείο κειμένουκαι στη σελίδα χαρτιού είδατε μια σειρά από ακατανόητες ασυναρτησίες, που σήμαινε ότι οι κατάλληλες γραμματοσειρές δεν είχαν φορτωθεί στη συσκευή εκτύπωσης και δεν ερμήνευε τα byte όπως θα θέλατε.

Αυτή η προσέγγιση γενικά και οι κωδικοποιήσεις ενός byte ειδικότερα είχαν ορισμένα σημαντικά μειονεκτήματα:

  • Ήταν δυνατή η ταυτόχρονη εργασία μόνο με 256 χαρακτήρες, με τους πρώτους 128 να προορίζονται για λατινικούς χαρακτήρες και χαρακτήρες ελέγχου, και στο δεύτερο μισό, εκτός από τα σύμβολα του εθνικού αλφαβήτου, ήταν απαραίτητο να βρεθεί μια θέση για ψευδογραφικά σύμβολα ( ╔ ╗).
  • Οι γραμματοσειρές ήταν συνδεδεμένες με μια συγκεκριμένη κωδικοποίηση.
  • Κάθε κωδικοποίηση αντιπροσώπευε το δικό της σύνολο χαρακτήρων και η μετατροπή από τον έναν στον άλλο ήταν δυνατή μόνο με μερικές απώλειες, όταν οι χαρακτήρες που λείπουν αντικαταστάθηκαν με γραφικά παρόμοιους.
  • Η μεταφορά αρχείων μεταξύ συσκευών με διαφορετικά λειτουργικά συστήματα ήταν δύσκολη. Έπρεπε είτε να έχετε ένα πρόγραμμα μετατροπέα είτε να έχετε επιπλέον γραμματοσειρές μαζί με το αρχείο. Η ύπαρξη του Διαδικτύου όπως ξέρουμε ήταν αδύνατη.
  • Υπάρχουν μη αλφαβητικά συστήματα γραφής στον κόσμο (ιερογλυφική ​​γραφή), τα οποία κατ' αρχήν δεν μπορούν να αναπαρασταθούν σε κωδικοποίηση ενός byte.
  • Βασικές αρχές του Unicode Όλοι καταλαβαίνουμε πολύ καλά ότι ένας υπολογιστής δεν γνωρίζει ιδανικές οντότητες, αλλά λειτουργεί με bit και byte. Αλλά συστήματα υπολογιστώνΕνώ οι άνθρωποι δημιουργούν, όχι μηχανές, μερικές φορές είναι πιο βολικό για εσάς και για εμένα να λειτουργούμε με κερδοσκοπικές έννοιες και μετά να περνάμε από το αφηρημένο στο συγκεκριμένο.

    Σπουδαίος! Μία από τις κεντρικές αρχές στη φιλοσοφία του Unicode είναι η σαφής διάκριση μεταξύ των χαρακτήρων, η αναπαράστασή τους σε έναν υπολογιστή και η εμφάνισή τους σε μια συσκευή εξόδου.

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

    Για παράδειγμα, ο χαρακτήρας Unicode U+041F είναι το κεφαλαίο κυριλλικό γράμμα P. Υπάρχουν διάφοροι τρόποι αναπαράστασης αυτού του χαρακτήρα στη μνήμη του υπολογιστή, καθώς και αρκετές χιλιάδες τρόποι εμφάνισης στην οθόνη της οθόνης. Αλλά ταυτόχρονα P, θα είναι επίσης P ή U+041F στην Αφρική.

    Αυτή είναι η γνωστή ενθυλάκωση ή ο διαχωρισμός της διεπαφής από την υλοποίηση - μια ιδέα που έχει αποδειχθεί καλά στον προγραμματισμό.

    Αποδεικνύεται ότι, καθοδηγούμενο από το πρότυπο, οποιοδήποτε κείμενο μπορεί να κωδικοποιηθεί ως μια ακολουθία χαρακτήρων Unicode

    Γεια σου U+041F U+0440 U+0438 U+0432 U+0435 U+0442
    γράψτε το σε ένα κομμάτι χαρτί, συσκευάστε το σε ένα φάκελο και στείλτε το σε οποιοδήποτε μέρος της Γης. Εάν γνωρίζουν για την ύπαρξη του Unicode, τότε το κείμενο θα γίνει αντιληπτό από αυτούς με τον ίδιο ακριβώς τρόπο όπως εσείς και εγώ. Δεν θα έχουν την παραμικρή αμφιβολία ότι ο προτελευταίος χαρακτήρας είναι το κυριλλικό πεζό μι(U+0435), και να μην πω λατινικά small μι(U+0065). Παρατηρήστε ότι δεν έχουμε πει λέξη για την αναπαράσταση byte.

    Αν και οι χαρακτήρες Unicode ονομάζονται σύμβολα, δεν αντιστοιχούν πάντα σε ένα σύμβολο με την παραδοσιακή αφελή έννοια, όπως ένα γράμμα, έναν αριθμό, ένα σημείο στίξης ή ένα ιερογλυφικό. (Δείτε spoiler για περισσότερες λεπτομέρειες.)

    Παραδείγματα διάφορων χαρακτήρων Unicode

    Υπάρχουν αμιγώς τεχνικοί χαρακτήρες Unicode, για παράδειγμα:

    • U+0000: μηδενικός χαρακτήρας.
    • U+D800–U+DFFF: δευτερεύοντα και μεγάλα υποκατάστατα για την τεχνική αναπαράσταση σημείων κώδικα στην περιοχή από 10000 έως 10FFFF (διαβάστε: εκτός του BML/BMP) στην οικογένεια κωδικοποίησης UTF-16.
    • και τα λοιπά.
    Υπάρχουν δείκτες στίξης, για παράδειγμα U+200F: ένας δείκτης για την αλλαγή της κατεύθυνσης γραφής από τα δεξιά προς τα αριστερά.

    Υπάρχει μια ολόκληρη ομάδα χώρων διαφόρων πλάτους και σκοπών (δείτε εξαιρετικό άρθρο habra:):

    • U+0020 (διάστημα);
    • U+00A0 (χωρίς διακοπή, σε HTML).
    • U+2002 (ημικυκλική ενσωμάτωση ή En Space).
    • U+2003 (ενσωμάτωση ή Em Space);
    • και τα λοιπά.
    Υπάρχουν συνδυαστικά διακριτικά σημάδια - κάθε είδους πινελιές, κουκκίδες, tildes κ.λπ., που αλλάζουν/ διευκρινίζουν το νόημα του προηγούμενου σημείου και το στυλ του. Για παράδειγμα:
    • U+0300 και U+0301: σημεία πρωτογενούς (οξείας) και δευτερογενούς (ασθενούς) στρες.
    • U+0306: σύντομη (επικεφαλής), όπως στο th;
    • U+0303: υπερκείμενο tilde;
    • και τα λοιπά.
    Υπάρχει ακόμη και κάτι εξωτικό όπως οι ετικέτες γλώσσας (U+E0001, U+E0020–U+E007E και U+E007F), οι οποίες επί του παρόντος βρίσκονται σε κενό. Είχαν σκοπό να επισημάνουν ορισμένα τμήματα του κειμένου ότι ανήκουν σε μια συγκεκριμένη παραλλαγή γλώσσας (για παράδειγμα, αμερικανικά και βρετανικά αγγλικά), η οποία θα μπορούσε να επηρεάσει τις λεπτομέρειες του τρόπου εμφάνισης του κειμένου.

    Θα σας πούμε την επόμενη φορά τι είναι ένα σύμβολο, πώς διαφέρει ένα σύμπλεγμα γραφημάτων (διαβάστε: εκλαμβάνεται ως μια ενιαία εικόνα ενός συμβόλου) από ένα σύμβολο Unicode και από ένα κβαντικό κώδικα.

    Χώρος κωδικών Unicode Ο χώρος κωδικών Unicode αποτελείται από 1.114.112 θέσεις κωδικών που κυμαίνονται από 0 έως 10FFFF. Από αυτά, μόνο σε 128.237 έχουν εκχωρηθεί τιμές για την ένατη έκδοση του προτύπου. Μέρος του χώρου προορίζεται για ιδιωτική χρήση και η Κοινοπραξία Unicode υπόσχεται να μην εκχωρήσει ποτέ τιμές σε θέσεις σε αυτές τις ειδικές περιοχές.

    Για λόγους ευκολίας, ολόκληρος ο χώρος χωρίζεται σε 17 επίπεδα (τα έξι από αυτά χρησιμοποιούνται αυτήν τη στιγμή). Μέχρι πρόσφατα, λεγόταν συνήθως ότι πιθανότατα θα συναντούσατε μόνο το Basic Multilingual Plane (BMP), το οποίο περιλαμβάνει χαρακτήρες Unicode από U+0000 έως U+FFFF. (Κοιτάμε λίγο μπροστά: οι χαρακτήρες από το BMP αντιπροσωπεύονται στο UTF-16 με δύο byte, όχι με τέσσερα). Το 2016, αυτή η διατριβή είναι ήδη υπό αμφισβήτηση. Για παράδειγμα, δημοφιλείς χαρακτήρες Emoji μπορεί κάλλιστα να εμφανίζονται σε ένα μήνυμα χρήστη και πρέπει να μπορείτε να τους επεξεργαστείτε σωστά.

    Κωδικοποιήσεις Εάν θέλουμε να στείλουμε κείμενο μέσω του Διαδικτύου, θα χρειαστεί να κωδικοποιήσουμε μια ακολουθία χαρακτήρων Unicode ως ακολουθία byte.

    Το πρότυπο Unicode περιλαμβάνει μια περιγραφή ενός αριθμού κωδικοποιήσεων Unicode, όπως UTF-8 και UTF-16BE/UTF-16LE, οι οποίες επιτρέπουν την κωδικοποίηση ολόκληρου του χώρου χαρακτήρων. Η μετατροπή μεταξύ αυτών των κωδικοποιήσεων μπορεί να πραγματοποιηθεί ελεύθερα χωρίς απώλεια πληροφοριών.

    Επίσης, κανείς δεν έχει ακυρώσει κωδικοποιήσεις ενός byte, αλλά σας επιτρέπουν να κωδικοποιήσετε το δικό σας μεμονωμένο και πολύ στενό κομμάτι του φάσματος Unicode - 256 ή λιγότερες θέσεις κώδικα. Για τέτοιες κωδικοποιήσεις, υπάρχουν πίνακες και είναι διαθέσιμοι σε όλους, όπου κάθε τιμή ενός byte συσχετίζεται με έναν χαρακτήρα Unicode (δείτε, για παράδειγμα, CP1251.TXT). Παρά τους περιορισμούς, οι κωδικοποιήσεις ενός byte αποδεικνύονται πολύ πρακτικές όταν πρόκειται για εργασία με μια μεγάλη σειρά μονόγλωσσων πληροφορίες κειμένου.

    Από τις κωδικοποιήσεις Unicode, η πιο κοινή στο Διαδίκτυο είναι η UTF-8 (κέρδισε την παλάμη το 2008), κυρίως λόγω της αποτελεσματικότητάς της και της διαφανούς συμβατότητάς της με επτά bit ASCII. Λατινικοί χαρακτήρες και χαρακτήρες υπηρεσίας, βασικά σημεία στίξης και αριθμοί - π.χ. Όλοι οι χαρακτήρες ASCII επτά bit κωδικοποιούνται στο UTF-8 ως ένα byte, όπως και στο ASCII. Οι χαρακτήρες πολλών μεγάλων σεναρίων, χωρίς να υπολογίζουμε κάποιους πιο σπάνιους ιερογλυφικούς χαρακτήρες, αντιπροσωπεύονται σε αυτό με δύο ή τρία byte. Η μεγαλύτερη θέση κώδικα που ορίζεται από το πρότυπο, 10FFFF, κωδικοποιείται σε τέσσερα byte.

    Λάβετε υπόψη ότι το UTF-8 είναι μια κωδικοποίηση μεταβλητού μήκους κώδικα. Κάθε χαρακτήρας Unicode σε αυτό αντιπροσωπεύεται από μια ακολουθία κβαντικών κώδικα με ελάχιστο μήκος ενός κβαντικού. Ο αριθμός 8 σημαίνει το μήκος bit της μονάδας κώδικα (μονάδα κώδικα) - 8 bit. Για την οικογένεια κωδικοποίησης UTF-16, το μέγεθος του κβαντικού κώδικα είναι, αντίστοιχα, 16 bit. Για UTF-32 - 32 bit.

    Εάν στέλνετε μια σελίδα HTML με κυριλλικό κείμενο μέσω του δικτύου, τότε το UTF-8 μπορεί να προσφέρει ένα πολύ σημαντικό όφελος, επειδή όλα τα σημάδια, καθώς και τα μπλοκ JavaScript και CSS, θα κωδικοποιηθούν αποτελεσματικά σε ένα byte. Για παράδειγμα, η κύρια σελίδα του Habr στο UTF-8 καταλαμβάνει 139 Kb και στο UTF-16 είναι ήδη 256 Kb. Για σύγκριση, εάν χρησιμοποιήσετε το win-1251 με την απώλεια της δυνατότητας αποθήκευσης ορισμένων χαρακτήρων, τότε το μέγεθος, σε σύγκριση με το UTF-8, θα μειωθεί μόνο κατά 11Kb σε 128Kb.
    Για την αποθήκευση πληροφοριών συμβολοσειρών σε εφαρμογές, χρησιμοποιούνται συχνά κωδικοποιήσεις Unicode 16 bit λόγω της απλότητάς τους, καθώς και του γεγονότος ότι οι χαρακτήρες των σημαντικότερων συστημάτων γραφής στον κόσμο κωδικοποιούνται σε ένα κβαντικό δεκαέξι bit. Έτσι, για παράδειγμα, Java for εσωτερική εκπροσώπησηΗ συμβολοσειρά εφαρμόζεται με επιτυχία UTF-16. χειρουργείο Σύστημα Windowsχρησιμοποιεί επίσης το UTF-16 εσωτερικά.

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

    Για να ερμηνεύσετε σωστά το κείμενο που διαβάζεται από έναν δίσκο ή από μια υποδοχή δικτύου, πρέπει πρώτα να προσδιορίσετε την κωδικοποίησή του. Αυτό γίνεται είτε χρησιμοποιώντας μετα-πληροφορίες που παρέχονται από τον χρήστη, γραμμένες μέσα ή δίπλα στο κείμενο, είτε προσδιορίζονται ευρετικά.

    Η ουσία είναι ότι υπάρχουν πολλές πληροφορίες και είναι λογικό να δώσουμε μια σύντομη περίληψη όλων όσων γράφτηκαν παραπάνω:
    • Το Unicode υποστηρίζει μια σαφή διάκριση μεταξύ των χαρακτήρων, της αναπαράστασής τους σε έναν υπολογιστή και της εμφάνισής τους σε μια συσκευή εξόδου.
    • Οι χαρακτήρες Unicode δεν αντιστοιχούν πάντα σε έναν χαρακτήρα με την παραδοσιακή - αφελή έννοια, όπως ένα γράμμα, ένας αριθμός, ένα σημείο στίξης ή ένα ιερογλυφικό.
    • Ο χώρος κωδικών Unicode αποτελείται από 1.114.112 θέσεις κωδικών που κυμαίνονται από 0 έως 10FFFF.
    • Το βασικό πολύγλωσσο επίπεδο περιλαμβάνει χαρακτήρες Unicode U+0000 έως U+FFFF, οι οποίοι κωδικοποιούνται σε UTF-16 ως δύο byte.
    • Οποιαδήποτε κωδικοποίηση Unicode σάς επιτρέπει να κωδικοποιήσετε ολόκληρο τον χώρο των θέσεων κώδικα Unicode και η μετατροπή μεταξύ διαφορετικών τέτοιων κωδικοποιήσεων πραγματοποιείται χωρίς απώλεια πληροφοριών.
    • Οι κωδικοποιήσεις ενός byte σάς επιτρέπουν να κωδικοποιήσετε μόνο ένα μικρό μέρος του φάσματος Unicode, αλλά μπορεί να είναι χρήσιμες όταν εργάζεστε με μεγάλο όγκομονόγλωσσες πληροφορίες.
    • Οι κωδικοποιήσεις UTF-8 και UTF-16 έχουν μεταβλητά μήκη κώδικα. Στο UTF-8, κάθε χαρακτήρας Unicode μπορεί να κωδικοποιηθεί σε ένα, δύο, τρία ή τέσσερα byte. Σε UTF-16 - δύο ή τέσσερα byte.
    • Η εσωτερική μορφή για την αποθήκευση πληροφοριών κειμένου σε μια ξεχωριστή εφαρμογή μπορεί να είναι αυθαίρετη, υπό την προϋπόθεση ότι λειτουργεί σωστά με ολόκληρο τον χώρο των θέσεων κωδικών Unicode και δεν υπάρχουν απώλειες κατά τη διασυνοριακή μεταφορά δεδομένων.
    Μια γρήγορη σημείωση σχετικά με την κωδικοποίηση Μπορεί να υπάρξει κάποια σύγχυση με τον όρο κωδικοποίηση. Μέσα στο Unicode, η κωδικοποίηση πραγματοποιείται δύο φορές. Την πρώτη φορά που κωδικοποιείται ένα σύνολο χαρακτήρων Unicode, με την έννοια ότι σε κάθε χαρακτήρα Unicode εκχωρείται μια αντίστοιχη θέση κωδικού. Αυτή η διαδικασία μετατρέπει το σύνολο χαρακτήρων Unicode σε ένα κωδικοποιημένο σύνολο χαρακτήρων. Τη δεύτερη φορά, η ακολουθία χαρακτήρων Unicode μετατρέπεται σε μια συμβολοσειρά byte και αυτή η διαδικασία ονομάζεται επίσης κωδικοποίηση.

    Στην αγγλική ορολογία, υπάρχουν δύο διαφορετικά ρήματα, το να κωδικοποιώ και να κωδικοποιώ, αλλά ακόμη και οι φυσικοί ομιλητές συχνά μπερδεύονται με αυτά. Επιπλέον, ο όρος σύνολο χαρακτήρων ή σύνολο χαρακτήρων χρησιμοποιείται ως συνώνυμο του όρου κωδικοποιημένο σύνολο χαρακτήρων.

    Τα λέμε όλα αυτά για το γεγονός ότι είναι λογικό να δίνουμε προσοχή στο πλαίσιο και να διακρίνουμε καταστάσεις όταν μιλάμε για τη θέση κώδικα ενός αφηρημένου χαρακτήρα Unicode και όταν μιλάμε για την αναπαράστασή του byte.

    Συμπερασματικά Υπάρχουν τόσες πολλές διαφορετικές πτυχές του Unicode που είναι αδύνατο να καλυφθούν τα πάντα σε ένα άρθρο. Και είναι περιττό. Οι παραπάνω πληροφορίες είναι αρκετές για να αποφευχθεί η σύγχυση στις βασικές αρχές και η εργασία με κείμενο στις περισσότερες καθημερινές εργασίες (διαβάστε: χωρίς να υπερβείτε το BMP). Στα επόμενα άρθρα θα μιλήσουμε για κανονικοποίηση και θα δώσουμε μια πιο ολοκληρωμένη ιστορική επισκόπησηανάπτυξη κωδικοποιήσεων, θα μιλήσουμε για τα προβλήματα της ρωσικής ορολογίας Unicode και επίσης θα δημιουργήσουμε υλικό για τις πρακτικές πτυχές της χρήσης UTF-8 και UTF-16.

    Excel για Office 365 Word για Office 365 Outlook για Office 365 PowerPoint για Office 365 Εκδότης για Office 365 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 OneNote 2016 Publisher 2019 Visio Outlook 2019 Visio Professional 2910 Word 2019 Standard 201920 ok 2016 PowerPoint 2016 OneNot e 2013 Publisher 2016 Visio 2013 Visio Professional 2016 Visio Standard 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Publisher 2013 Excel 2010 Word 2010 Outlook 2010 1010101010 PowerPoint 2010 10 Excel 2007 Word 2007 Outlook 2 007 PowerPoint 2007 Publisher 2007 Access 2007 Visio 2007 OneNote 2007 Office 2010 Visio Standard 2007 Visio Standard 2010 Less

    Σε αυτό το άρθρο: Εισαγάγετε έναν χαρακτήρα ASCII ή Unicode σε ένα έγγραφο

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

    Σημειώσεις:

    Εισαγωγή χαρακτήρων ASCII

    Για να εισαγάγετε έναν χαρακτήρα ASCII, πατήστε και κρατήστε πατημένο το πλήκτρο ALT ενώ εισάγετε τον κωδικό χαρακτήρα. Για παράδειγμα, για να εισαγάγετε ένα σύμβολο βαθμού (º), πατήστε και κρατήστε πατημένο το πλήκτρο ALT και, στη συνέχεια, πληκτρολογήστε 0176 στο αριθμητικό πληκτρολόγιο.

    Για να εισαγάγετε αριθμούς, χρησιμοποιήστε το αριθμητικό πληκτρολόγιο αντί για τους αριθμούς στο κύριο πληκτρολόγιο. Εάν πρέπει να εισαγάγετε αριθμούς στο αριθμητικό πληκτρολόγιο, βεβαιωθείτε ότι η ένδειξη NUM LOCK είναι αναμμένη.

    Εισαγωγή χαρακτήρων Unicode

    Για να εισαγάγετε έναν χαρακτήρα Unicode, εισαγάγετε τον κωδικό χαρακτήρα και, στη συνέχεια, πατήστε Πλήκτρα ALTκαι X. Για παράδειγμα, για να εισαγάγετε ένα σύμβολο δολαρίου ($), πληκτρολογήστε 0024 και πατήστε ALT και X με τη σειρά. Για όλους τους κωδικούς χαρακτήρων Unicode, βλ.

    Σημαντικό: Ορισμένα προγράμματα το γραφείο της Microsoft, όπως το PowerPoint και το InfoPath, δεν υποστηρίζουν τη μετατροπή κωδικών Unicode σε χαρακτήρες. Εάν χρειάζεται να εισαγάγετε έναν χαρακτήρα Unicode σε ένα από αυτά τα προγράμματα, χρησιμοποιήστε το .

    Σημειώσεις:

      Εάν εμφανιστεί λάθος χαρακτήρας Unicode αφού πατήσετε το ALT+X, επιλέξτε τον σωστό κωδικό και, στη συνέχεια, πατήστε ξανά το ALT+X.

      Επιπλέον, πρέπει να εισαγάγετε "U+" πριν από τον κωδικό. Για παράδειγμα, εάν πληκτρολογήσετε "1U+B5" και πατήσετε ALT+X, θα εμφανιστεί το κείμενο "1µ" και εάν πληκτρολογήσετε "1B5" και πατήσετε ALT+X, θα εμφανιστεί το σύμβολο "Ƶ".

    Χρησιμοποιώντας τον πίνακα συμβόλων

    Ένας πίνακας συμβόλων είναι ένα ενσωματωμένο πρόγραμμα Microsoft Windows, το οποίο σας επιτρέπει να προβάλλετε τους διαθέσιμους χαρακτήρες για την επιλεγμένη γραμματοσειρά.

    Χρησιμοποιώντας έναν πίνακα συμβόλων, μπορείτε να αντιγράψετε μεμονωμένα σύμβολα ή μια ομάδα συμβόλων στο πρόχειρο και να τα επικολλήσετε σε οποιοδήποτε πρόγραμμα που υποστηρίζει την εμφάνιση αυτών των συμβόλων. Άνοιγμα του πίνακα συμβόλων

      Στα Windows 10, εισαγάγετε τη λέξη "σύμβολο" στο πλαίσιο αναζήτησης στη γραμμή εργασιών και επιλέξτε τον πίνακα συμβόλων από τα αποτελέσματα αναζήτησης.

      Στα Windows 8, εισαγάγετε τη λέξη "χαρακτήρας" στο αρχική οθόνηκαι επιλέξτε πίνακα συμβόλων από τα αποτελέσματα αναζήτησης.

      Στα Windows 7, κάντε κλικ στο κουμπί Έναρξη, επιλέξτε Όλα τα προγράμματα, τα εξαρτήματα, τα εργαλεία συστήματος και, στη συνέχεια, κάντε κλικ στο Χάρτης χαρακτήρων.

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

    Κωδικοί χαρακτήρων που χρησιμοποιούνται συχνά

    Πλήρης λίσταχαρακτήρες, δείτε στον υπολογιστή σας, πίνακα κωδικών χαρακτήρων ASCII ή πίνακες χαρακτήρων Unicode οργανωμένους ανά σύνολο.

    Γλύφος

    Γλύφος

    Νόμισμα

    Νομικά σύμβολα

    Μαθηματικά σύμβολα

    Κλάσματα

    Στίξη και σύμβολα διαλέκτου

    Σύμβολα σχήματος

    Διακριτικοί κωδικοί που χρησιμοποιούνται συνήθως

    Για μια πλήρη λίστα των γλυφών και των αντίστοιχων κωδικών, βλ.

    Γλύφος

    Γλύφος

    Μη εκτυπωτικοί χαρακτήρες ελέγχου ASCII

    Σημάδια που χρησιμοποιούνται για τον έλεγχο ορισμένων περιφερειακές συσκευές, για παράδειγμα εκτυπωτές, σε πίνακας ASCIIέχουν αριθμούς 0-31. Για παράδειγμα, ο χαρακτήρας τροφοδοσίας σελίδας/νέα σελίδα είναι ο αριθμός 12. Αυτός ο χαρακτήρας λέει στον εκτυπωτή να μετακινηθεί στην αρχή της επόμενης σελίδας.

    Πίνακας μη εκτυπωτικών χαρακτήρων ελέγχου ASCII

    Δεκαδικός αριθμός

    Σημάδι

    Δεκαδικός αριθμός

    Σημάδι

    Απελευθέρωση του καναλιού δεδομένων

    Αρχή τίτλου

    Κωδικός ελέγχου πρώτης συσκευής

    Αρχή κειμένου

    Δεύτερος κωδικός ελέγχου συσκευής

    Τέλος κειμένου

    Κωδικός ελέγχου τρίτης συσκευής

    Τέλος μετάδοσης

    Τέταρτος κωδικός ελέγχου συσκευής

    πεντάκτινο

    Αρνητική επιβεβαίωση

    Επιβεβαίωση

    Λειτουργία σύγχρονης μετάδοσης

    Ηχητικό σήμα

    Τέλος του μπλοκ μεταδιδόμενων δεδομένων

    Οριζόντιος πίνακας

    Τέλος ΜΜΕ

    Τροφοδοσία γραμμής/νέα γραμμή

    Σύμβολο αντικατάστασης

    Κάθετη καρτέλα

    υπερβαίνω

    Μετάφραση σελίδας/νέα σελίδα

    Δώδεκα

    Διαχωριστής αρχείων

    Επιστροφή άμαξα

    Διαχωριστής ομάδας

    Μετατόπιση χωρίς αποθήκευση bits

    Διαχωριστής εγγραφών

    Μετατόπιση διατήρησης bit

    δεκαπέντε

    Διαχωριστής δεδομένων

    Το Unicode είναι Διεθνές πρότυποκωδικοποιήσεις χαρακτήρων που επιτρέπουν το κείμενο να εμφανίζεται με συνέπεια σε οποιονδήποτε υπολογιστή στον κόσμο, ανεξάρτητα από τη γλώσσα συστήματος που χρησιμοποιείται σε αυτόν.

    Βασικά

    Για να κατανοήσουμε τι χρησιμεύει ο πίνακας χαρακτήρων Unicode, ας κατανοήσουμε πρώτα τον μηχανισμό εμφάνισης κειμένου σε μια οθόνη οθόνης. Ο υπολογιστής, όπως γνωρίζουμε, επεξεργάζεται όλες τις πληροφορίες ψηφιακή μορφή, και πρέπει να εμφανίζεται γραφικά για σωστή ανθρώπινη αντίληψη. Έτσι, για να διαβάσουμε αυτό το κείμενο, πρέπει να λύσουμε τουλάχιστον δύο προβλήματα:

    • Κωδικοποιήστε τυπωμένους χαρακτήρες σε ψηφιακή μορφή.
    • Δώστε στο λειτουργικό σύστημα τη δυνατότητα να αντιστοιχίσει την ψηφιακή μορφή με τους διανυσματικούς χαρακτήρες, με άλλα λόγια, να βρείτε τα σωστά γράμματα.
    Πρώτες κωδικοποιήσεις

    Το American ASCII θεωρείται ο πρόγονος όλων των κωδικοποιήσεων. Περιέγραφε το λατινικό αλφάβητο με σημεία στίξης και αραβικούς αριθμούς που χρησιμοποιούνται στα αγγλικά. Ήταν οι 128 χαρακτήρες που χρησιμοποιήθηκαν σε αυτό που έγιναν η βάση για τις επόμενες εξελίξεις - ακόμη και ο σύγχρονος πίνακας χαρακτήρων Unicode τους χρησιμοποιεί. Τα γράμματα του λατινικού αλφαβήτου έχουν από τότε καταλάβει τις πρώτες θέσεις σε οποιαδήποτε κωδικοποίηση.

    Συνολικά, το ASCII επέτρεψε την αποθήκευση 256 χαρακτήρων, αλλά δεδομένου ότι οι πρώτοι 128 καταλαμβάνονταν από το λατινικό αλφάβητο, οι υπόλοιποι 128 άρχισαν να χρησιμοποιούνται σε όλο τον κόσμο για τη δημιουργία εθνικών προτύπων. Για παράδειγμα, στη Ρωσία, το CP866 και το KOI8-R δημιουργήθηκαν στη βάση του. Τέτοιες παραλλαγές ονομάστηκαν εκτεταμένες εκδόσεις του ASCII.

    Κωδικές σελίδες και "krakozyabry"

    Η περαιτέρω ανάπτυξη της τεχνολογίας και η εμφάνιση μιας γραφικής διεπαφής οδήγησε στη δημιουργία της κωδικοποίησης ANSI από το Αμερικανικό Ινστιτούτο Προτύπων. Ρώσοι χρήστες, ειδικά με την εμπειρία, η έκδοσή του είναι γνωστή κάτω με το όνομα Windows 1251. Η έννοια της «σελίδας κώδικα» χρησιμοποιήθηκε για πρώτη φορά σε αυτήν. Ήταν με τη βοήθεια σελίδων κώδικα που περιείχαν χαρακτήρες από εθνικά αλφάβητα εκτός από το λατινικό, που δημιουργήθηκε η «αμοιβαία κατανόηση» μεταξύ των υπολογιστών που χρησιμοποιούνται σε διαφορετικές χώρες.

    Παράλληλα η παρουσία μεγάλη ποσότηταδιαφορετικές κωδικοποιήσεις που χρησιμοποιούνται για την ίδια γλώσσα άρχισαν να προκαλούν προβλήματα. Εμφανίστηκαν τα λεγόμενα krakozyabrs. Προέκυψαν από μια ασυμφωνία μεταξύ της σελίδας του πηγαίου κώδικα στην οποία δημιουργήθηκε οποιαδήποτε πληροφορία και της προεπιλεγμένης κωδικοσελίδας που χρησιμοποιείται στον υπολογιστή του τελικού χρήστη.

    Ως παράδειγμα, μπορούμε να αναφέρουμε τις παραπάνω κυριλλικές κωδικοποιήσεις CP866 και KOI8-R. Τα γράμματα σε αυτά διέφεραν σε θέσεις κώδικα και αρχές τοποθέτησης. Στην πρώτη τακτοποιήθηκαν με αλφαβητική σειρά και στη δεύτερη - με τυχαία σειρά. Μπορείτε να φανταστείτε τι συνέβαινε μπροστά στα μάτια του χρήστη που προσπάθησε να ανοίξει ένα τέτοιο κείμενο χωρίς να έχει την απαιτούμενη κωδικοσελίδα ή με αυτήν κακή ερμηνείαυπολογιστή.

    Δημιουργία Unicode

    Η διάδοση του Διαδικτύου και των συναφών τεχνολογιών όπως π.χ ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ, οδήγησε στο γεγονός ότι τελικά η κατάσταση με την παραμόρφωση των κειμένων έπαψε να ταιριάζει σε όλους. Κορυφαίες εταιρείες πληροφορικής έχουν σχηματίσει την Unicode Consortium. Ο πίνακας χαρακτήρων που παρουσίασε το 1991, ονόματι UTF-32, μπορούσε να αποθηκεύσει περισσότερους από ένα δισεκατομμύριο μοναδικούς χαρακτήρες. Ήταν το πιο σημαντικό βήμαστον δρόμο για την αποκρυπτογράφηση κειμένων.

    Ωστόσο, ο πρώτος καθολικός πίνακας κωδικών χαρακτήρων, Unicode UTF-32, δεν χρησιμοποιήθηκε ευρέως. Ο κύριος λόγος ήταν ο πλεονασμός των αποθηκευμένων πληροφοριών. Υπολογίστηκε γρήγορα ότι για χώρες που χρησιμοποιούν το λατινικό αλφάβητο κωδικοποιημένο με χρήση του νέου καθολικού πίνακα, το κείμενο θα καταλάμβανε τετραπλάσιο χώρο από ό,τι χρησιμοποιώντας τον εκτεταμένο πίνακα ASCII.

    Ανάπτυξη Unicode

    Ο παρακάτω πίνακας χαρακτήρων Unicode UTF-16 διόρθωσε αυτό το πρόβλημα. Η κωδικοποίηση σε αυτό πραγματοποιήθηκε με το ήμισυ του αριθμού των bit, αλλά ταυτόχρονα μειώθηκε ο αριθμός των δυνατών συνδυασμών. Αντί για δισεκατομμύρια χαρακτήρες, σας επιτρέπει να αποθηκεύσετε μόνο 65.536. Ωστόσο, αποδείχθηκε τόσο επιτυχημένο που αυτός ο αριθμός, σύμφωνα με την απόφαση της Κοινοπραξίας, ορίστηκε ως ο βασικός χώρος αποθήκευσης για τυπικούς χαρακτήρες Unicode.

    Παρά την επιτυχία αυτή, το UTF-16 δεν ταίριαζε σε όλους, αφού ο όγκος των πληροφοριών που αποθηκεύτηκαν και μεταδόθηκαν εξακολουθούσαν να διπλασιάζονται. Η καθολική λύση ήταν ο UTF-8, ένας πίνακας χαρακτήρων Unicode μεταβλητού μήκους. Αυτό μπορεί να ονομαστεί μια σημαντική ανακάλυψη σε αυτόν τον τομέα.

    Έτσι, με την εισαγωγή των δύο τελευταίων προτύπων, ο πίνακας χαρακτήρων Unicode έλυσε το πρόβλημα ενός ενιαίου χώρου κώδικα για όλες τις γραμματοσειρές που χρησιμοποιούνται αυτήν τη στιγμή.

    Unicode για τη ρωσική γλώσσα

    Λόγω του μεταβλητού μήκους του κώδικα που χρησιμοποιείται για την εμφάνιση χαρακτήρων, το λατινικό αλφάβητο κωδικοποιείται στο Unicode με τον ίδιο τρόπο όπως στον πρόγονό του ASCII, δηλαδή σε ένα bit. Για άλλα αλφάβητα η εικόνα μπορεί να φαίνεται διαφορετική. Για παράδειγμα, οι χαρακτήρες του γεωργιανού αλφαβήτου χρησιμοποιούν τρία byte για κωδικοποίηση και οι χαρακτήρες του κυριλλικού αλφαβήτου δύο. Όλα αυτά είναι δυνατά στο πλαίσιο της χρήσης του προτύπου UTF-8 Unicode (πίνακας χαρακτήρων). Η ρωσική γλώσσα ή το κυριλλικό αλφάβητο καταλαμβάνει 448 θέσεις στον γενικό χώρο κώδικα, χωρισμένο σε πέντε μπλοκ.

    Αυτά τα πέντε μπλοκ περιλαμβάνουν το βασικό κυριλλικό και εκκλησιαστικό σλαβικό αλφάβητο, καθώς και πρόσθετα γράμματα από άλλες γλώσσες που χρησιμοποιούν το κυριλλικό αλφάβητο. Ένας αριθμός θέσεων έχει κατανεμηθεί για την εμφάνιση παλαιών μορφών αναπαράστασης κυριλλικών γραμμάτων και 22 θέσεις από το σύνολο είναι ακόμα ελεύθερες.

    Η τρέχουσα έκδοση του Unicode

    Με τη λύση του πρωταρχικού της καθήκοντος, που ήταν η τυποποίηση των γραμματοσειρών και η δημιουργία ενιαίου χώρου κωδικών για αυτές, η Κοινοπραξία δεν σταμάτησε το έργο της. Το Unicode εξελίσσεται και επεκτείνεται συνεχώς. τελευταίος τρέχουσα έκδοσηΑυτό το πρότυπο 9.0 κυκλοφόρησε το 2016. Περιλάμβανε έξι επιπλέον αλφάβητα και επέκτεινε τη λίστα των τυποποιημένων emoji.

    Πρέπει να ειπωθεί ότι για να απλοποιηθεί η έρευνα, ακόμη και οι λεγόμενες νεκρές γλώσσες προστίθενται στο Unicode. Έλαβαν αυτό το όνομα επειδή δεν υπάρχουν άνθρωποι για τους οποίους είναι αυτόχθονα. Αυτή η ομάδα περιλαμβάνει επίσης γλώσσες που έχουν φτάσει στην εποχή μας μόνο με τη μορφή γραπτών μνημείων.

    Κατ' αρχήν, οποιοσδήποτε μπορεί να υποβάλει αίτηση για προσθήκη χαρακτήρων στη νέα προδιαγραφή Unicode. Είναι αλήθεια ότι για αυτό θα πρέπει να συμπληρώσετε μια αξιοπρεπή ποσότητα αρχικών εγγράφων και να περάσετε πολύ χρόνο. Ένα ζωντανό παράδειγμα αυτού είναι η ιστορία του προγραμματιστή Terence Eden. Το 2013, υπέβαλε αίτηση για να συμπεριληφθούν στις προδιαγραφές σύμβολα που σχετίζονται με την ονομασία των κουμπιών ελέγχου ισχύος του υπολογιστή. ΣΕ Τεχνικό εγχειρίδιοχρησιμοποιούνται από τα μέσα της δεκαετίας του 1970, αλλά δεν ήταν μέρος του Unicode μέχρι την προδιαγραφή 9.0.

    πίνακας συμβόλων

    Κάθε υπολογιστής, ανεξάρτητα από το λειτουργικό σύστημα που χρησιμοποιείται, χρησιμοποιεί τον πίνακα χαρακτήρων Unicode. Πώς να χρησιμοποιήσετε αυτούς τους πίνακες, πού να τους βρείτε και γιατί μπορούν να είναι χρήσιμοι στον μέσο χρήστη;

    Στο λειτουργικό σύστημα Windows, ο πίνακας συμβόλων βρίσκεται στην ενότητα μενού "Βοηθητικά προγράμματα". Στην οικογένεια του χειρουργείου Συστήματα Linuxμπορεί συνήθως να βρεθεί στην υποενότητα "Αξεσουάρ" και στο MacOS - στις ρυθμίσεις πληκτρολογίου. Ο κύριος σκοπός αυτού του πίνακα είναι να εισέλθει έγγραφα κειμένουχαρακτήρες που δεν βρίσκονται στο πληκτρολόγιο.

    Μπορείτε να βρείτε το ευρύτερο φάσμα εφαρμογών για τέτοιους πίνακες: από την εισαγωγή τεχνικών συμβόλων και εθνικών συμβόλων νομισματικά συστήματαπριν γράψετε οδηγίες για Πρακτική εφαρμογηΚάρτες Ταρώ.

    Τελικά

    Το Unicode χρησιμοποιείται παντού και μπήκε στη ζωή μας με την ανάπτυξη του Διαδικτύου και των τεχνολογιών κινητής τηλεφωνίας. Χάρη στη χρήση του, το σύστημα διεθνικών επικοινωνιών έχει απλοποιηθεί σημαντικά. Μπορούμε να πούμε ότι η εισαγωγή του Unicode είναι ένα ενδεικτικό, αλλά εντελώς αόρατο εξωτερικά, παράδειγμα χρήσης της τεχνολογίας για το κοινό καλό όλης της ανθρωπότητας.