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

Δημιουργήστε μια φόρμα σχολίων

Σχετικά με προβλήματα με την κωδικοποίηση αρχείων

Κατά τη δημιουργία μιας φόρμας σχολίων, συχνά προκύπτουν προβλήματα με την κωδικοποίηση αρχείων, γι' αυτό και το email που φτάνει αποτελείται από υπέροχα τετράγωνα, διαμάντια και άλλα «τρελά πράγματα».

Ας ρίξουμε μια πιο προσεκτική ματιά σε αυτήν την κραυγαλέα παρεξήγηση. Όπως γνωρίζετε, η κωδικοποίηση (charset) είναι μια μέθοδος αναπαράστασης χαρακτήρων για τη μετάδοσή τους. Εξάλλου, κάθε πληροφορία που κυκλοφορεί σε έναν υπολογιστή είναι μια ακολουθία μηδενικών και μονάδων. Η κωδικοποίηση χαρακτήρων αποτελείται από πολλά byte, συνήθως από 1 έως 4. Υπάρχουν πολλές κωδικοποιήσεις και το πρόγραμμα περιήγησης πρέπει να προσδιορίσει σωστά σε ποια από αυτές είναι γραμμένη η σελίδα του ιστότοπου που ανοίγει.

Στις περισσότερες περιπτώσεις, τα σύγχρονα προγράμματα περιήγησης αντιμετωπίζουν με επιτυχία αυτό το έργο μόνοι τους. Ωστόσο, για να προσδιορίσετε σωστά την κωδικοποίηση, είναι σύνηθες να παρέχετε μια υπόδειξη στον κώδικα HTML χρησιμοποιώντας μια μετα-ετικέτα, για παράδειγμα,
ή
.
.

Οι αρχάριοι σχεδιαστές ιστοσελίδων μερικές φορές πιστεύουν λανθασμένα ότι αρκεί να εισαγάγετε την επιθυμητή μετα-ετικέτα στο επάνω μέρος της σελίδας - και όλα θα πάνε καλά! Είναι μια αυταπάτη. Όπως σωστά έγραψε ο Kozma Prutkov: «Αν δείτε την επιγραφή «Buffalo» σε ένα κλουβί με έναν ελέφαντα, μην πιστεύετε στα μάτια σας». Είναι απαραίτητο όχι μόνο να γράψετε, για παράδειγμα, charset=utf-8, αλλά και να διασφαλίσετε ότι η σελίδα όντως γίνεται με την καθορισμένη κωδικοποίηση.

Ο ευκολότερος τρόπος για να μάθετε την πραγματική κωδικοποίηση μιας σελίδας είναι ανοίγοντάς την σε οποιοδήποτε πρόγραμμα περιήγησης και επιλέγοντας το στοιχείο στο μενού Προβολή - Κωδικοποίηση. Όταν αλλάζετε κωδικοποιήσεις, προσδιορίστε ποια από αυτές θα εμφανίσει σωστά τη σελίδα - αυτή θα είναι η πραγματική σας κωδικοποίηση. Υποδείξτε το στη μετα-ετικέτα. Εάν θέλετε να αλλάξετε την κωδικοποίηση, τότε για να το κάνετε αυτό πρέπει να μεταβείτε στις ρυθμίσεις του προγράμματος με το οποίο δημιουργείτε τον ιστότοπο και να ορίσετε την απαιτούμενη κωδικοποίηση. Για παράδειγμα, στο πρόγραμμα Adobe DreamweaverΓια να το κάνετε αυτό, πρέπει να επιλέξετε μια ενότητα μενού Επεξεργασία - Ρυθμίσεις... - Δημιουργία εγγράφου - Προεπιλεγμένη κωδικοποίηση. Συνήθως χρησιμοποιούνται κωδικοποιήσεις charset=utf-8ή charset=windows-1251.

Σχόλιο: Συνιστάται να τοποθετήσετε τη μετα-ετικέτα που υποδεικνύει την κωδικοποίηση στην αρχή του κώδικα HTML αμέσως μετά την ετικέτα έτσι ώστε το πρόγραμμα περιήγησης να επιλέξει τη σωστή κωδικοποίηση πριν εμφανίσει τον τίτλο της σελίδας (ετικέτα ...), που εμφανίζεται στη μπλε γραμμή στο επάνω μέρος του παραθύρου του προγράμματος περιήγησης. Διαφορετικά, αντί για μπορούμε να δούμε τα ίδια υπέροχα τετράγωνα και διαμάντια.</p> </blockquote> <p>Εντελώς περιττά προβλήματα με την κωδικοποίηση προκύπτουν επίσης όταν μια σελίδα ιστότοπου αποτελείται από πολλά αρχεία, για παράδειγμα, εισαγωγή πλαισίων, σεναρίων <b>JavaScript</b>και ούτω καθεξής. Είναι απαραίτητο να διασφαλιστεί ότι όλα αυτά τα μέρη δημιουργούνται με την ίδια κωδικοποίηση. Παρεμπιπτόντως, είναι ακριβώς για αυτήν την περίπτωση που στα προγράμματα αλληλογραφίας, για παράδειγμα, στο mail.ru, υπάρχουν συνήθως πολλά κουμπιά για χειροκίνητη εναλλαγή κωδικοποιήσεων, καθώς μερικές φορές είναι δύσκολο να προσδιοριστεί αυτόματα σε ποια κωδικοποίηση φθάνει ένα γράμμα στο ταχυδρομείο είναι γραμμένο.</p> <p>Επιστρέφοντας στη φόρμα σχολίων, σημειώστε ότι τα δεδομένα κωδικοποίησης μηνυμάτων ενδέχεται να αλλάξουν κατά την προώθηση. Απλοποιημένος, ο μηχανισμός για την παράδοση μιας επιστολής από μια φόρμα στο email σας μοιάζει με αυτό. Αρχικά, το γράμμα πηγαίνει σε ένα ενδιάμεσο γραμματοκιβώτιο στον διακομιστή φιλοξενίας σας και από εκεί αποστέλλεται στη διεύθυνση που καθορίσατε στο αρχείο PHP. Μπορείτε εύκολα να βρείτε αυτό το ενδιάμεσο πλαίσιο κοιτάζοντας στον πίνακα ελέγχου του ιστότοπού σας στην ενότητα <b>Ταχυδρομείο</b>. Όλη αυτή η διαδικασία πραγματοποιείται υπό τον έλεγχο του προγράμματος PHP. Επομένως, είναι επίσης χρήσιμο να υποδείξετε για άλλη μια φορά τη σωστή κωδικοποίηση του αρχείου σας.</p> <p>Για να το κάνετε αυτό, πρέπει να στο αρχείο PHP (στη φόρμα σχολίων μας αυτό είναι <b>mail.php</b>) προσθήκη γραμμής κεφαλίδας ( <b>κεφαλίδες</b>), που χρησιμεύει για τον καθορισμό ορισμένων πρόσθετων παραμέτρων του γράμματος στο πρόγραμμα αλληλογραφίας: τύπος εγγράφου <b>κείμενο/απλό</b>(απλό κείμενο), διεύθυνση αποστολέα, κωδικοποίηση κ.λπ. Για την περίπτωσή μας, ας προσθέσουμε την ακόλουθη γραμμή κεφαλίδας( <b>κεφαλίδες</b>) υποδεικνύοντας την κωδικοποίηση: <br>$to = "pupkin@rambler.ru"; //Εισαγάγετε τη διεύθυνσή σας εδώ <br>$headers = "Τύπος περιεχομένου: κείμενο/απλό; charset=utf-8"; <br>$subject = "Μήνυμα από τον ιστότοπό σας"; <br>$message = "Όνομα αποστολέα: $name \nΔιεύθυνση ηλεκτρονικού ταχυδρομείου: $email \nΜήνυμα: $mess"; <br>$send = mail($to, $subject, $message, $headers);</p> <p>Είναι επίσης καλή ιδέα να ενημερώσετε το πρόγραμμα περιήγησης σχετικά με τη σωστή κωδικοποίηση προσθέτοντας μια κεφαλίδα με μετα-ετικέτα στη σελίδα PHP για την υποβολή της φόρμας σχολίων (δείτε «Δημιουργία φόρμας σχολίων») <br> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />.</p> <p>Προβλήματα με την κωδικοποίηση προκύπτουν επίσης εάν χρησιμοποιείτε σενάρια στη σελίδα για να εμφανίσετε οποιοδήποτε κείμενο, για παράδειγμα, ένα ticker, μια ημερομηνία κ.λπ. Για να αλλάξετε την κωδικοποίηση σεναρίου μπορείτε να χρησιμοποιήσετε <b>Microsoft Word</b>. Για να το κάνετε αυτό, ανοίξτε το έγγραφο, ορίστε την επιθυμητή κωδικοποίηση εάν εξάγεται λανθασμένα (ανατρέξτε στη Βοήθεια του Word για το πώς να το κάνετε αυτό) και, στη συνέχεια, αποθηκεύστε το ως εξής: <b>Αρχείο - Αποθήκευση ως - Απλό κείμενο - Αποθήκευση</b>. Στο παράθυρο που ανοίγει, μπορείτε να ορίσετε την απαιτούμενη κωδικοποίηση που ταιριάζει με την κωδικοποίηση της σελίδας σας. <br></p> <p>Δυστυχώς, οι απλές μέθοδοι που περιγράφονται για τον καθορισμό της κωδικοποίησης δεν εξαλείφουν πάντα τα σφάλματα κατά τον προσδιορισμό της. Μερικές φορές απαιτείται σημαντική χειρουργική επέμβαση για τη λειτουργία του μηχανήματος PHP. Μπορείτε εύκολα, αλλά αν θέλετε, να βρείτε τις απαραίτητες πληροφορίες για τέτοιες λειτουργίες σε έναν κατάλογο που ονομάζεται "Internet" - το ποντίκι είναι στα χέρια σας!</p> <p><i>18/03/2011</i></p> <ul>Περισσότερα άρθρα σχετικά με το θέμα "Δημιουργία, βελτιστοποίηση και προώθηση ιστότοπου":</ul> <p>Τα τελευταία δύο χρόνια, έχουν σημειωθεί αρκετές αξιοσημείωτες πρόοδοι στην κατασκευή κωδικών διόρθωσης σφαλμάτων. Έχουν βρεθεί μέθοδοι για την κατασκευή αποτελεσματικών, πολύ μακρών κωδίκων. και, το πιο σημαντικό, αυτοί οι κώδικες αποδείχθηκαν κατάλληλοι για πρακτική εφαρμογή. Ταυτόχρονα, υπάρχει αυξανόμενη ανάγκη για κανάλια επικοινωνίας πολύ υψηλής αξιοπιστίας, τα οποία θα μπορούσαν να χρησιμοποιηθούν σε συγκροτήματα υπολογιστών και διαφόρων αυτόματων εξοπλισμών. Καθώς αυξάνεται η ανάγκη για μεγαλύτερη αξιοπιστία, η αποδοτικότητα λειτουργίας των ηλεκτρονικών λογικών συσκευών αυξάνεται και η θεωρία κωδικοποίησης αναπτύσσεται περισσότερο, πλησιάζει ο χρόνος που οι συσκευές ανίχνευσης και διόρθωσης σφαλμάτων, δηλαδή συσκευές του τύπου που περιγράφονται σε αυτό το βιβλίο, θα διαδραματίσουν όλο και πιο σημαντικό ρόλο Ρόλος στη δημιουργία πολύπλοκων πληροφοριακών συστημάτων.</p><p>Αυτό το κεφάλαιο εισάγει την έννοια του καναλιού επικοινωνίας, περιγράφει τον ρόλο των κωδικών στη μετάδοση πληροφοριών, ορίζει τους κωδικούς μπλοκ και εισάγει άλλες σημαντικές έννοιες.</p><h3>1.1. Σύνδεσμος</h3> <p>Ένα σχηματικό διάγραμμα ενός ψηφιακού συστήματος επικοινωνίας φαίνεται στο Σχ. 1.1. Το ίδιο μοντέλο περιγράφει επίσης το σύστημα αποθήκευσης πληροφοριών, εάν το περιβάλλον στο οποίο αποθηκεύονται οι πληροφορίες θεωρείται ως κανάλι. Ένα τυπικό κανάλι για τη μετάδοση πληροφοριών είναι το τηλεφωνικό κανάλι. Μια τυπική συσκευή αποθήκευσης πληροφοριών είναι ένα μαγνητόφωνο, συμπεριλαμβανομένων των κεφαλών εγγραφής και ανάγνωσης.</p><p>Ρύζι. 1.1. Μπλοκ διάγραμμα ενός συστήματος μετάδοσης ή αποθήκευσης γενικών πληροφοριών.</p><p>Μια τυπική πηγή πληροφοριών είναι ένα μήνυμα που αποτελείται από δυαδικά ή δεκαδικά ψηφία ή κείμενο γραμμένο σε κάποιο αλφάβητο. Ένας κωδικοποιητής μετατρέπει αυτά τα μηνύματα σε σήματα που μπορούν να μεταδοθούν</p> <p>κατά κανάλι. Τα τυπικά σήματα είναι ηλεκτρικά, με ορισμένους περιορισμούς στην ισχύ, το εύρος ζώνης και τη διάρκεια. Αυτά τα σήματα εισέρχονται στο κανάλι και παραμορφώνονται από το θόρυβο. Το παραμορφωμένο σήμα εισέρχεται στη συνέχεια σε μια συσκευή αποκωδικοποίησης, η οποία ανακατασκευάζει το απεσταλμένο μήνυμα και το προωθεί στον παραλήπτη. Το καθήκον του μηχανικού επικοινωνιών είναι κυρίως να κατασκευάσει τον κωδικοποιητή και τον αποκωδικοποιητή, αν και μπορεί επίσης να περιλαμβάνει τη βελτίωση του ίδιου του καναλιού. Σημειώστε ότι ο κωδικοποιητής περιλαμβάνει μια συσκευή που εκτελεί μια λειτουργία που συνήθως ονομάζεται διαμόρφωση και ο αποκωδικοποιητής περιλαμβάνει μια συσκευή που εκτελεί ανίχνευση.</p><p>Το σύστημα που φαίνεται στο Σχ. Το 1.1 είναι πολύ γενικό για να χρησιμοποιηθεί εύκολα στη θεωρητική ανάλυση. Η γενική θεωρία κωδικοποίησης δείχνει ότι ένα κανάλι επικοινωνίας έχει μια ορισμένη χωρητικότητα, ότι οι τυπικές πηγές έχουν μια ορισμένη ταχύτητα δημιουργίας πληροφοριών και ότι στην περίπτωση που η ταχύτητα δημιουργίας πληροφοριών από την πηγή είναι μικρότερη από τη χωρητικότητα του καναλιού, η κωδικοποίηση και η αποκωδικοποίηση μπορούν να γίνουν διενεργείται έτσι ώστε η πιθανότητα λανθασμένης αποκωδικοποίησης να είναι αυθαίρετη μικρή</p><p><img src='https://i2.wp.com/info.sernam.ru/archive/arch.php?path=../htm/book_code/files.book&file=code_2.files/image2.gif' width="100%" loading=lazy loading=lazy></p><p>Ρύζι. 1.2, Μπλοκ διάγραμμα ενός τυπικού συστήματος μετάδοσης ή αποθήκευσης πληροφοριών.</p><p>Έτσι, αν και υπάρχει ελπίδα για το μέλλον, προς το παρόν η θεωρία δεν παρέχει παρά αόριστες ενδείξεις για το πώς πρέπει να σχεδιαστεί ένα σύστημα μετάδοσης πληροφοριών.</p><p>Ένα τυπικό σύγχρονο σύστημα μετάδοσης πληροφοριών φαίνεται στο Σχ. 1.2. Σχεδόν όλοι οι υπολογιστές μετατρέπουν τις εισερχόμενες πληροφορίες σε δυαδικές και στη συνέχεια τις επεξεργάζονται σε δυαδική μορφή. Πολλά συστήματα χρησιμοποιούν κώδικα στον οποίο διάφορα</p> <p>συνδυασμοί έξι δυαδικών χαρακτήρων αντιπροσωπεύουν αριθμούς, γράμματα, κενό διάστημα και ειδικούς χαρακτήρες όπως σημεία στίξης. Ένας άλλος κοινός κωδικός χρησιμοποιεί τέσσερα δυαδικά ψηφία για κάθε δεκαδικό ψηφίο και δύο δεκαδικά ψηφία για κάθε αλφαβητικό ή ειδικό χαρακτήρα.</p><p>Μια συσκευή για την κωδικοποίηση δυαδικών συμβόλων σε σήματα στην είσοδο ενός καναλιού ονομάζεται μερικές φορές διαμορφωτής. Στις περισσότερες περιπτώσεις, συσχετίζει ένα ένα με μια ώθηση και ένα μηδέν με την απουσία μιας ώθησης ή μιας παρόρμησης σαφώς διακριτής από τον κωδικό για ένα. Αυτή η ξεχωριστή μετατροπή κάθε δυαδικού χαρακτήρα είναι ένας περιορισμός που σίγουρα προκαλεί μείωση της απόδοσης του καναλιού. Ο αποκωδικοποιητής καθορίζει εάν ο επόμενος παλμός που λαμβάνεται είναι μηδέν ή ένα. Η αποκωδικοποίηση μεμονωμένων παλμών οδηγεί ανεξάρτητα σε περαιτέρω μείωση της απόδοσης. Η θεωρία δείχνει ότι πιο πολύπλοκες μέθοδοι κωδικοποίησης και αποκωδικοποίησης αυξάνουν την ταχύτητα μετάδοσης για την ίδια πιθανότητα σφάλματος. Ωστόσο, αποτελεσματικοί τρόποι εφαρμογής αυτών των μεθόδων δεν είναι ακόμη γνωστοί.</p><p>Οι συσκευές που κωδικοποιούν και αποκωδικοποιούν δυαδικούς χαρακτήρες χρησιμοποιούν δυαδικούς κωδικούς για τον εντοπισμό και τη διόρθωση σφαλμάτων.</p> <p>Γεια σας, αγαπητοί αναγνώστες του ιστότοπου του ιστολογίου. Σήμερα θα σας μιλήσουμε για το από πού προέρχονται τα krakozyabr σε έναν ιστότοπο και σε προγράμματα, ποιες κωδικοποιήσεις κειμένου υπάρχουν και ποιες πρέπει να χρησιμοποιηθούν. Ας ρίξουμε μια πιο προσεκτική ματιά στην ιστορία της ανάπτυξής τους, ξεκινώντας από το βασικό ASCII, καθώς και τις εκτεταμένες εκδόσεις του CP866, KOI8-R, Windows 1251 και τελειώνοντας με τις σύγχρονες κωδικοποιήσεις κοινοπραξίας Unicode UTF 16 και 8.</p><p>Σε κάποιους, αυτές οι πληροφορίες μπορεί να φαίνονται περιττές, αλλά ξέρετε πόσες ερωτήσεις λαμβάνω ειδικά σχετικά με τα ανιχνευόμενα krakozyabrs (μη αναγνώσιμο σύνολο χαρακτήρων). Τώρα θα έχω την ευκαιρία να παραπέμψω όλους στο κείμενο αυτού του άρθρου και να βρω τα δικά μου λάθη. Λοιπόν, ετοιμαστείτε να απορροφήσετε τις πληροφορίες και προσπαθήστε να ακολουθήσετε τη ροή της ιστορίας.</p><h2>ASCII - βασική κωδικοποίηση κειμένου για το λατινικό αλφάβητο</h2><p>Η ανάπτυξη των κωδικοποιήσεων κειμένου συνέβη ταυτόχρονα με τη διαμόρφωση της βιομηχανίας πληροφορικής και κατά τη διάρκεια αυτής της περιόδου κατάφεραν να υποστούν πολλές αλλαγές. Ιστορικά, όλα ξεκίνησαν με το EBCDIC, το οποίο ήταν μάλλον παράφωνο στη ρωσική προφορά, το οποίο επέτρεψε την κωδικοποίηση γραμμάτων του λατινικού αλφαβήτου, αραβικών αριθμών και σημείων στίξης με χαρακτήρες ελέγχου.</p><p>Ωστόσο, το σημείο εκκίνησης για την ανάπτυξη σύγχρονων κωδικοποιήσεων κειμένου θα πρέπει να θεωρείται το διάσημο <b>ASCII</b>(American Standard Code for Information Interchange, ο οποίος στα ρωσικά προφέρεται συνήθως ως "aski"). Περιγράφει τους πρώτους 128 χαρακτήρες που χρησιμοποιούνται πιο συχνά από αγγλόφωνους χρήστες - λατινικά γράμματα, αραβικούς αριθμούς και σημεία στίξης.</p><p>Αυτοί οι 128 χαρακτήρες που περιγράφονται στο ASCII περιελάμβαναν επίσης ορισμένους χαρακτήρες υπηρεσιών όπως αγκύλες, σημάδια κατακερματισμού, αστερίσκους κ.λπ. Μάλιστα, μπορείτε να τα δείτε μόνοι σας:</p><p>Είναι αυτοί οι 128 χαρακτήρες από την αρχική έκδοση του ASCII που έχουν γίνει το πρότυπο και σε οποιαδήποτε άλλη κωδικοποίηση θα τους βρείτε σίγουρα και θα εμφανίζονται με αυτή τη σειρά.</p><p>Αλλά το γεγονός είναι ότι με ένα byte πληροφοριών μπορείτε να κωδικοποιήσετε όχι 128, αλλά έως και 256 διαφορετικές τιμές (δύο στη δύναμη του οκτώ ισούται με 256), οπότε μετά τη βασική έκδοση του Asuka μια ολόκληρη σειρά <b>εκτεταμένες κωδικοποιήσεις ASCII</b>, στο οποίο, εκτός από 128 βασικούς χαρακτήρες, ήταν επίσης δυνατή η κωδικοποίηση συμβόλων της εθνικής κωδικοποίησης (για παράδειγμα, ρωσικά).</p><p>Εδώ, ίσως αξίζει να πούμε λίγα περισσότερα για τα συστήματα αριθμών που χρησιμοποιούνται στην περιγραφή. Πρώτον, όπως όλοι γνωρίζετε, ένας υπολογιστής λειτουργεί μόνο με αριθμούς στο δυαδικό σύστημα, δηλαδή με μηδενικά και ένα («Άλγεβρα Boole», αν κάποιος τον πήρε σε ινστιτούτο ή σχολείο). , καθένα από τα οποία είναι δύο στη δύναμη, ξεκινώντας από το μηδέν, και μέχρι δύο έως το έβδομο:</p><p><img src='https://i0.wp.com/ktonanovenkogo.ru/image/kodirovka-teksta.png' width="100%" loading=lazy loading=lazy></p><p>Δεν είναι δύσκολο να καταλάβουμε ότι όλοι οι πιθανοί συνδυασμοί μηδενικών και μονάδων σε ένα τέτοιο σχέδιο μπορούν να είναι μόνο 256. Η μετατροπή ενός αριθμού από το δυαδικό σύστημα στο δεκαδικό σύστημα είναι αρκετά απλή. Απλά πρέπει να αθροίσετε όλες τις δυνάμεις των δύο με μία πάνω από αυτές.</p><p>Στο παράδειγμά μας, αυτό αποδεικνύεται ότι είναι 1 (2 στη δύναμη του μηδέν) συν 8 (δύο στη δύναμη του 3), συν 32 (δύο στην πέμπτη δύναμη), συν 64 (στην έκτη δύναμη), συν 128 (στην έβδομη δύναμη). Το σύνολο είναι 233 σε δεκαδικό συμβολισμό. Όπως μπορείτε να δείτε, όλα είναι πολύ απλά.</p><p>Αλλά αν κοιτάξετε προσεκτικά τον πίνακα με χαρακτήρες ASCII, θα δείτε ότι αντιπροσωπεύονται σε δεκαεξαδική κωδικοποίηση. Για παράδειγμα, ο "αστερίσκος" αντιστοιχεί στον δεκαεξαδικό αριθμό 2Α στο Aski. Πιθανότατα γνωρίζετε ότι στο δεκαεξαδικό σύστημα αριθμών, εκτός από τους αραβικούς αριθμούς, χρησιμοποιούνται και λατινικά γράμματα από το A (σημαίνει δέκα) έως το F (σημαίνει δεκαπέντε).</p><p>Λοιπόν, για <b>μετατροπή δυαδικού αριθμού σε δεκαεξαδικό</b>καταφύγετε στην παρακάτω απλή και προφανή μέθοδο. Κάθε byte πληροφοριών χωρίζεται σε δύο μέρη των τεσσάρων bit, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης. Οτι. Σε κάθε μισό byte, μόνο δεκαέξι τιμές (δύο έως την τέταρτη δύναμη) μπορούν να κωδικοποιηθούν σε δυαδικό, το οποίο μπορεί εύκολα να αναπαρασταθεί ως δεκαεξαδικός αριθμός.</p><p>Επιπλέον, στο αριστερό μισό του byte οι μοίρες θα πρέπει να μετρηθούν ξανά ξεκινώντας από το μηδέν και όχι όπως φαίνεται στο στιγμιότυπο οθόνης. Ως αποτέλεσμα, μέσω απλών υπολογισμών, παίρνουμε ότι ο αριθμός Ε9 είναι κωδικοποιημένος στο στιγμιότυπο οθόνης. Ελπίζω ότι η πορεία του συλλογισμού μου και η λύση αυτού του γρίφου ήταν σαφής για εσάς. Λοιπόν, τώρα ας συνεχίσουμε, στην πραγματικότητα, μιλώντας για κωδικοποιήσεις κειμένου.</p><h3>Εκτεταμένες εκδόσεις κωδικοποιήσεων Asuka - CP866 και KOI8-R με ψευδογραφήματα</h3><p>Έτσι, αρχίσαμε να μιλάμε για το ASCII, το οποίο ήταν, σαν να λέγαμε, το σημείο εκκίνησης για την ανάπτυξη όλων των σύγχρονων κωδικοποιήσεων (Windows 1251, Unicode, UTF 8).</p><p>Αρχικά, περιείχε μόνο 128 χαρακτήρες του λατινικού αλφαβήτου, αραβικούς αριθμούς και κάτι άλλο, αλλά στην εκτεταμένη έκδοση κατέστη δυνατή η χρήση και των 256 τιμών που μπορούν να κωδικοποιηθούν σε ένα byte πληροφοριών. Εκείνοι. Κατέστη δυνατή η προσθήκη συμβόλων γραμμάτων της γλώσσας σας στο Aski.</p><p>Εδώ θα χρειαστεί να απομακρυνθούμε ξανά για να εξηγήσουμε - <b>γιατί χρειαζόμαστε καθόλου κωδικοποιήσεις;</b>κείμενα και γιατί είναι τόσο σημαντικό. Οι χαρακτήρες στην οθόνη του υπολογιστή σας σχηματίζονται με βάση δύο πράγματα - σύνολα διανυσματικών μορφών (αναπαραστάσεις) διαφόρων χαρακτήρων (βρίσκονται σε αρχεία με ) και κώδικα που σας επιτρέπει να βγάλετε από αυτό το σύνολο διανυσματικών μορφών (αρχείο γραμματοσειράς ) ακριβώς ο χαρακτήρας που θα πρέπει να εισαχθεί στη σωστή θέση.</p><p>Είναι σαφές ότι οι ίδιες οι γραμματοσειρές είναι υπεύθυνες για τα διανυσματικά σχήματα, αλλά το λειτουργικό σύστημα και τα προγράμματα που χρησιμοποιούνται σε αυτό είναι υπεύθυνα για την κωδικοποίηση. Εκείνοι. οποιοδήποτε κείμενο στον υπολογιστή σας θα είναι ένα σύνολο byte, καθένα από τα οποία κωδικοποιεί έναν μόνο χαρακτήρα αυτού του κειμένου.</p><p>Το πρόγραμμα που εμφανίζει αυτό το κείμενο στην οθόνη (επεξεργαστής κειμένου, πρόγραμμα περιήγησης κ.λπ.), κατά την ανάλυση του κώδικα, διαβάζει την κωδικοποίηση του επόμενου χαρακτήρα και αναζητά την αντίστοιχη διανυσματική φόρμα στο απαιτούμενο αρχείο γραμματοσειράς, το οποίο συνδέεται για να εμφανίσει αυτό έγγραφο κειμένου. Όλα είναι απλά και μπανάλ.</p><p>Αυτό σημαίνει ότι για να κωδικοποιήσουμε οποιονδήποτε χαρακτήρα χρειαζόμαστε (για παράδειγμα, από το εθνικό αλφάβητο), πρέπει να πληρούνται δύο προϋποθέσεις - η διανυσματική μορφή αυτού του χαρακτήρα πρέπει να είναι στη γραμματοσειρά που χρησιμοποιείται και αυτός ο χαρακτήρας θα μπορούσε να κωδικοποιηθεί σε εκτεταμένες κωδικοποιήσεις ASCII στο ένα byte. Επομένως, υπάρχει μια ολόκληρη δέσμη τέτοιων επιλογών. Μόνο για την κωδικοποίηση χαρακτήρων της ρωσικής γλώσσας, υπάρχουν πολλές ποικιλίες εκτεταμένων Aska.</p><p>Για παράδειγμα, εμφανίστηκε αρχικά <b>CP866</b>, το οποίο είχε τη δυνατότητα να χρησιμοποιεί χαρακτήρες από το ρωσικό αλφάβητο και ήταν μια εκτεταμένη έκδοση του ASCII.</p><p>Εκείνοι. Το πάνω μέρος του συμπίπτει πλήρως με τη βασική έκδοση του Aska (128 λατινικοί χαρακτήρες, αριθμοί και άλλα χάλια), η οποία παρουσιάζεται στο στιγμιότυπο οθόνης ακριβώς πάνω, αλλά το κάτω μέρος του πίνακα με κωδικοποίηση CP866 είχε την εμφάνιση που υποδεικνύεται στο στιγμιότυπο οθόνης ακριβώς από κάτω και σας επέτρεψε να κωδικοποιήσετε άλλα 128 σημάδια (ρωσικά γράμματα και κάθε είδους ψευδογραφικά στοιχεία):</p><p><img src='https://i2.wp.com/ktonanovenkogo.ru/image/cp866.png' width="100%" loading=lazy loading=lazy></p><p>Βλέπετε, στη δεξιά στήλη οι αριθμοί ξεκινούν με 8, γιατί... Οι αριθμοί από το 0 έως το 7 αναφέρονται στο βασικό μέρος του ASCII (δείτε το πρώτο στιγμιότυπο οθόνης). Οτι. Το ρωσικό γράμμα "M" στο CP866 θα έχει τον κωδικό 9C (βρίσκεται στη διασταύρωση της αντίστοιχης σειράς με το 9 και της στήλης με τον αριθμό C στο δεκαεξαδικό σύστημα αριθμών), ο οποίος μπορεί να γραφτεί σε ένα byte πληροφοριών και εάν υπάρχει κατάλληλη γραμματοσειρά με ρωσικούς χαρακτήρες, αυτό το γράμμα χωρίς προβλήματα θα εμφανιστεί στο κείμενο.</p><p>Από πού προήλθε αυτό το ποσό; <b>ψευδογραφικά στο CP866</b>? Το όλο θέμα είναι ότι αυτή η κωδικοποίηση για το ρωσικό κείμενο αναπτύχθηκε εκείνα τα δύσκολα χρόνια όταν τα λειτουργικά συστήματα γραφικών δεν ήταν τόσο διαδεδομένα όσο τώρα. Και στο Dosa και σε παρόμοια λειτουργικά συστήματα κειμένου, τα ψευδογραφικά στοιχεία κατέστησαν δυνατή τουλάχιστον με κάποιο τρόπο τη διαφοροποίηση του σχεδιασμού των κειμένων, και επομένως το CP866 και όλα τα άλλα όμοιά του από την κατηγορία των εκτεταμένων εκδόσεων του Asuka αφθονούν σε αυτό.</p><p>Το CP866 διανεμήθηκε από την IBM, αλλά εκτός από αυτό, αναπτύχθηκε ένας αριθμός κωδικοποιήσεων για χαρακτήρες ρωσικής γλώσσας, για παράδειγμα, μπορεί να αποδοθεί ο ίδιος τύπος (εκτεταμένο ASCII) <b>ΚΟΙ8-Ρ</b>:</p><p><img src='https://i0.wp.com/ktonanovenkogo.ru/image/koi8-r.png' width="100%" loading=lazy loading=lazy></p><p>Η αρχή της λειτουργίας του παραμένει η ίδια με αυτή του CP866 που περιγράφηκε λίγο νωρίτερα - κάθε χαρακτήρας κειμένου κωδικοποιείται από ένα μόνο byte. Το στιγμιότυπο οθόνης δείχνει το δεύτερο μισό του πίνακα KOI8-R, επειδή το πρώτο ημίχρονο είναι απολύτως συνεπές με το βασικό Asuka, το οποίο φαίνεται στο πρώτο στιγμιότυπο οθόνης αυτού του άρθρου.</p><p>Μεταξύ των χαρακτηριστικών της κωδικοποίησης KOI8-R, μπορεί να σημειωθεί ότι τα ρωσικά γράμματα στον πίνακά του δεν είναι με αλφαβητική σειρά, όπως, για παράδειγμα, το έκαναν στο CP866.</p><p>Αν κοιτάξετε το πρώτο στιγμιότυπο οθόνης (του βασικού μέρους, το οποίο περιλαμβάνεται σε όλες τις εκτεταμένες κωδικοποιήσεις), θα παρατηρήσετε ότι στο KOI8-R τα ρωσικά γράμματα βρίσκονται στα ίδια κελιά του πίνακα με τα αντίστοιχα γράμματα του λατινικού αλφαβήτου από το πρώτο μέρος του πίνακα. Αυτό έγινε για τη διευκόλυνση της εναλλαγής από τους ρωσικούς σε λατινικούς χαρακτήρες, απορρίπτοντας μόνο ένα bit (δύο στην έβδομη δύναμη ή 128).</p><h3>Windows 1251 - η σύγχρονη έκδοση του ASCII και γιατί βγαίνουν οι ρωγμές</h3><p>Η περαιτέρω ανάπτυξη των κωδικοποιήσεων κειμένου οφειλόταν στο γεγονός ότι τα λειτουργικά συστήματα γραφικών κέρδιζαν δημοτικότητα και η ανάγκη χρήσης ψευδογραφικών σε αυτά εξαφανίστηκε με την πάροδο του χρόνου. Ως αποτέλεσμα, προέκυψε μια ολόκληρη ομάδα που, στην ουσία, εξακολουθούσαν να είναι εκτεταμένες εκδόσεις του Asuka (ένας χαρακτήρας κειμένου κωδικοποιείται με μόνο ένα byte πληροφοριών), αλλά χωρίς τη χρήση ψευδογραφικών συμβόλων.</p><p>Ανήκαν στις λεγόμενες κωδικοποιήσεις ANSI, οι οποίες αναπτύχθηκαν από το Αμερικανικό Ινστιτούτο Προτύπων. Στην κοινή γλώσσα, το όνομα Κυριλλικό χρησιμοποιήθηκε επίσης για την έκδοση με υποστήριξη ρωσικής γλώσσας. Ένα παράδειγμα αυτού θα ήταν.</p><p>Διέφερε ευνοϊκά από τα προηγούμενα χρησιμοποιημένα CP866 και KOI8-R στο ότι τη θέση των ψευδογραφικών συμβόλων σε αυτό πήραν τα σύμβολα της ρωσικής τυπογραφίας που λείπουν (εκτός από το σημάδι τονισμού), καθώς και τα σύμβολα που χρησιμοποιούνται σε σλαβικές γλώσσες κοντά στο Ρωσικά (Ουκρανικά, Λευκορωσικά, κ.λπ.):</p><p><img src='https://i0.wp.com/ktonanovenkogo.ru/image/windows-1251.png' width="100%" loading=lazy loading=lazy></p><p>Λόγω μιας τέτοιας αφθονίας κωδικοποιήσεων στη ρωσική γλώσσα, οι κατασκευαστές γραμματοσειρών και οι κατασκευαστές λογισμικού είχαν συνεχώς πονοκεφάλους και εσείς και εγώ, αγαπητοί αναγνώστες, συχνά κάναμε τα ίδια διαβόητα <b>krakozyabry</b>όταν υπήρξε σύγχυση με την εκδοχή που χρησιμοποιήθηκε στο κείμενο.</p><p>Πολύ συχνά έβγαιναν κατά την αποστολή και λήψη μηνυμάτων μέσω e-mail, κάτι που συνεπαγόταν τη δημιουργία πολύ περίπλοκων πινάκων μετατροπής, οι οποίοι, στην πραγματικότητα, δεν μπορούσαν να λύσουν ουσιαστικά αυτό το πρόβλημα και οι χρήστες συχνά χρησιμοποιούσαν για αλληλογραφία για να αποφύγουν τα περιβόητα τεχνάσματα κατά τη χρήση Ρωσικές κωδικοποιήσεις όπως CP866, KOI8-R ή Windows 1251.</p><p>Στην πραγματικότητα, οι ρωγμές που εμφανίστηκαν αντί του ρωσικού κειμένου ήταν αποτέλεσμα λανθασμένης χρήσης της κωδικοποίησης αυτής της γλώσσας, η οποία δεν αντιστοιχούσε σε αυτήν στην οποία κωδικοποιήθηκε αρχικά το μήνυμα κειμένου.</p><p>Ας πούμε ότι εάν προσπαθήσετε να εμφανίσετε χαρακτήρες κωδικοποιημένους με χρήση CP866 χρησιμοποιώντας τον πίνακα κωδικών των Windows 1251, τότε θα εμφανιστούν αυτές οι ίδιες ασυναρτησίες (ένα σύνολο χαρακτήρων χωρίς νόημα), αντικαθιστώντας πλήρως το κείμενο του μηνύματος.</p><p><img src='https://i1.wp.com/ktonanovenkogo.ru/image/krakozyabry-kodirovka.png' height="259" width="325" loading=lazy loading=lazy></p><p>Μια παρόμοια κατάσταση εμφανίζεται πολύ συχνά σε φόρουμ ή ιστολόγια, όταν το κείμενο με ρωσικούς χαρακτήρες αποθηκεύεται κατά λάθος σε λάθος κωδικοποίηση που χρησιμοποιείται στον ιστότοπο από προεπιλογή ή σε λάθος πρόγραμμα επεξεργασίας κειμένου, το οποίο προσθέτει gags στον κώδικα που δεν είναι ορατό σε το γυμνό μάτι.</p><p>Στο τέλος, πολλοί άνθρωποι κουράστηκαν από αυτή την κατάσταση με πολλές κωδικοποιήσεις και διαρκώς τρυπώντας χάλια, και εμφανίστηκαν οι προϋποθέσεις για τη δημιουργία μιας νέας καθολικής παραλλαγής που θα αντικαθιστούσε όλες τις υπάρχουσες και θα έλυνε τελικά το πρόβλημα με την εμφάνιση αδιάβαστων κειμένων. Επιπλέον, υπήρχε το πρόβλημα γλωσσών όπως τα κινέζικα, όπου υπήρχαν πολύ περισσότεροι γλωσσικοί χαρακτήρες από 256.</p><h2>Unicode - καθολικές κωδικοποιήσεις UTF 8, 16 και 32</h2><p>Αυτοί οι χιλιάδες χαρακτήρες της ομάδας γλωσσών της Νοτιοανατολικής Ασίας δεν μπορούσαν να περιγραφούν σε ένα byte πληροφοριών που διατέθηκε για την κωδικοποίηση χαρακτήρων σε εκτεταμένες εκδόσεις του ASCII. Ως αποτέλεσμα, δημιουργήθηκε μια κοινοπραξία που ονομάζεται <b>Unicode</b>(Unicode - Unicode Consortium) με τη συνεργασία πολλών ηγετών του κλάδου της πληροφορικής (εκείνων που παράγουν λογισμικό, που κωδικοποιούν υλικό, που δημιουργούν γραμματοσειρές), που ενδιαφέρθηκαν για την εμφάνιση μιας καθολικής κωδικοποίησης κειμένου.</p><p>Η πρώτη παραλλαγή που κυκλοφόρησε υπό την αιγίδα της Unicode Consortium ήταν <b>UTF 32</b>. Ο αριθμός στο όνομα κωδικοποίησης σημαίνει τον αριθμό των bit που χρησιμοποιούνται για την κωδικοποίηση ενός χαρακτήρα. 32 bit ισούται με 4 byte πληροφοριών που θα χρειαστούν για την κωδικοποίηση ενός μεμονωμένου χαρακτήρα στη νέα καθολική κωδικοποίηση UTF.</p><p>Ως αποτέλεσμα, το ίδιο αρχείο με κείμενο κωδικοποιημένο στην εκτεταμένη έκδοση του ASCII και σε UTF-32, στην τελευταία περίπτωση, θα έχει μέγεθος (βάρος) τέσσερις φορές μεγαλύτερο. Αυτό είναι κακό, αλλά τώρα έχουμε την ευκαιρία να κωδικοποιήσουμε χρησιμοποιώντας YTF έναν αριθμό χαρακτήρων ίσο με δύο στη δύναμη τριάντα δευτερολέπτων ( <b>δισεκατομμύρια χαρακτήρες</b>, που θα καλύψει κάθε πραγματικά απαραίτητη αξία με ένα κολοσσιαίο περιθώριο).</p><p>Αλλά πολλές χώρες με γλώσσες της ευρωπαϊκής ομάδας δεν χρειαζόταν να χρησιμοποιούν τόσο τεράστιο αριθμό χαρακτήρων στην κωδικοποίηση, ωστόσο, όταν χρησιμοποιούν το UTF-32, χωρίς λόγο έλαβαν τετραπλάσια αύξηση στο βάρος των εγγράφων κειμένου, και ως αποτέλεσμα, αύξηση του όγκου της κίνησης στο Διαδίκτυο και του όγκου αποθηκευμένων δεδομένων. Αυτά είναι πολλά, και κανείς δεν μπορούσε να αντέξει τέτοια σπατάλη.</p><p>Ως αποτέλεσμα της ανάπτυξης του Unicode, <b>UTF-16</b>, το οποίο αποδείχθηκε τόσο επιτυχημένο που υιοθετήθηκε από προεπιλογή ως ο βασικός χώρος για όλους τους χαρακτήρες που χρησιμοποιούμε. Χρησιμοποιεί δύο byte για την κωδικοποίηση ενός χαρακτήρα. Ας δούμε πώς φαίνεται αυτό το πράγμα.</p><p>Στο λειτουργικό σύστημα Windows, μπορείτε να ακολουθήσετε τη διαδρομή "Έναρξη" - "Προγράμματα" - "Αξεσουάρ" - "Εργαλεία συστήματος" - "Πίνακας χαρακτήρων". Ως αποτέλεσμα, θα ανοίξει ένας πίνακας με τα διανυσματικά σχήματα όλων των γραμματοσειρών που είναι εγκατεστημένες στο σύστημά σας. Εάν επιλέξετε το σύνολο χαρακτήρων Unicode στις «Επιλογές για προχωρημένους», θα μπορείτε να δείτε για κάθε γραμματοσειρά ξεχωριστά ολόκληρο το εύρος των χαρακτήρων που περιλαμβάνονται σε αυτήν.</p><p>Παρεμπιπτόντως, κάνοντας κλικ σε οποιοδήποτε από αυτά, μπορείτε να δείτε τα δύο byte του <b>κώδικα σε μορφή UTF-16</b>, που αποτελείται από τέσσερα δεκαεξαδικά ψηφία:</p><p><img src='https://i1.wp.com/ktonanovenkogo.ru/image/yunikod.png' height="512" width="451" loading=lazy loading=lazy></p><p>Πόσοι χαρακτήρες μπορούν να κωδικοποιηθούν στο UTF-16 χρησιμοποιώντας 16 bit; 65.536 (δύο στη δύναμη του δεκαέξι) και αυτός είναι ο αριθμός που υιοθετήθηκε ως ο βασικός χώρος στο Unicode. Επιπλέον, υπάρχουν τρόποι κωδικοποίησης περίπου δύο εκατομμυρίων χαρακτήρων χρησιμοποιώντας το, αλλά περιορίζονταν σε έναν εκτεταμένο χώρο ενός εκατομμυρίου χαρακτήρων κειμένου.</p><p>Αλλά ακόμη και αυτή η επιτυχημένη έκδοση της κωδικοποίησης Unicode δεν έφερε μεγάλη ικανοποίηση σε όσους έγραψαν, ας πούμε, προγράμματα μόνο στα αγγλικά, γιατί γι' αυτούς, μετά τη μετάβαση από την εκτεταμένη έκδοση του ASCII στο UTF-16, το βάρος των εγγράφων διπλασιάστηκε ( ένα byte ανά χαρακτήρα στο Aski και δύο byte για τον ίδιο χαρακτήρα στο YUTF-16).</p><p>Ήταν ακριβώς για να ικανοποιήσει τους πάντες και τα πάντα στην κοινοπραξία Unicode που αποφασίστηκε να καταλήξει <b>κωδικοποίηση μεταβλητού μήκους</b>. Ονομάστηκε UTF-8. Παρά το οκτώ στο όνομά του, στην πραγματικότητα έχει μεταβλητό μήκος, δηλ. Κάθε χαρακτήρας κειμένου μπορεί να κωδικοποιηθεί σε μια ακολουθία μήκους ενός έως έξι byte.</p><p>Στην πράξη, το UTF-8 χρησιμοποιεί μόνο το εύρος από ένα έως τέσσερα byte, γιατί πέρα ​​από τέσσερα byte κώδικα δεν είναι πλέον ούτε θεωρητικά δυνατό να φανταστεί κανείς οτιδήποτε. Όλοι οι λατινικοί χαρακτήρες σε αυτό κωδικοποιούνται σε ένα byte, όπως στο παλιό καλό ASCII.</p><p>Αυτό που είναι αξιοσημείωτο είναι ότι στην περίπτωση κωδικοποίησης μόνο του λατινικού αλφαβήτου, ακόμη και εκείνα τα προγράμματα που δεν καταλαβαίνουν Unicode θα εξακολουθούν να διαβάζουν ό,τι είναι κωδικοποιημένο στο YTF-8. Εκείνοι. το βασικό μέρος της Asuka απλώς μεταφέρθηκε σε αυτή τη δημιουργία της κοινοπραξίας Unicode.</p><p>Οι κυριλλικοί χαρακτήρες στο UTF-8 κωδικοποιούνται σε δύο byte και, για παράδειγμα, οι γεωργιανοί χαρακτήρες κωδικοποιούνται σε τρία byte. Η κοινοπραξία Unicode, αφού δημιούργησε τα UTF 16 και 8, έλυσε το κύριο πρόβλημα - τώρα έχουμε <b>Οι γραμματοσειρές έχουν έναν ενιαίο χώρο κώδικα</b>. Και τώρα οι κατασκευαστές τους μπορούν να το γεμίσουν μόνο με διανυσματικές μορφές χαρακτήρων κειμένου με βάση τα δυνατά τους σημεία και τις δυνατότητές τους. Τώρα έρχονται και σε σετ.</p><p>Στον "Πίνακα χαρακτήρων" παραπάνω μπορείτε να δείτε ότι διαφορετικές γραμματοσειρές υποστηρίζουν διαφορετικούς αριθμούς χαρακτήρων. Ορισμένες γραμματοσειρές πλούσιες σε Unicode μπορεί να είναι αρκετά βαριές. Αλλά τώρα διαφέρουν όχι στο γεγονός ότι δημιουργήθηκαν για διαφορετικές κωδικοποιήσεις, αλλά στο γεγονός ότι ο κατασκευαστής της γραμματοσειράς έχει ή δεν έχει συμπληρώσει πλήρως τον ενιαίο χώρο κώδικα με ορισμένες διανυσματικές φόρμες.</p><h2>Τρελές λέξεις αντί για ρωσικά γράμματα - πώς να το διορθώσετε</h2><p>Ας δούμε τώρα πώς εμφανίζονται τα krakozyabr αντί για κείμενο ή, με άλλα λόγια, πώς επιλέγεται η σωστή κωδικοποίηση για το ρωσικό κείμενο. Στην πραγματικότητα, ορίζεται στο πρόγραμμα στο οποίο δημιουργείτε ή επεξεργάζεστε αυτό ακριβώς το κείμενο ή τον κώδικα χρησιμοποιώντας τμήματα κειμένου.</p><p>Για την επεξεργασία και τη δημιουργία αρχείων κειμένου, προσωπικά χρησιμοποιώ ένα πολύ καλό, κατά τη γνώμη μου, . Ωστόσο, μπορεί να επισημάνει τη σύνταξη εκατοντάδων άλλων γλωσσών προγραμματισμού και σήμανσης, ενώ έχει επίσης τη δυνατότητα να επεκταθεί χρησιμοποιώντας πρόσθετα. Διαβάστε μια αναλυτική κριτική αυτού του υπέροχου προγράμματος στον σύνδεσμο που παρέχεται.</p><p>Στο επάνω μενού του Notepad++ υπάρχει ένα στοιχείο "Κωδικοποιήσεις", όπου θα έχετε την ευκαιρία να μετατρέψετε μια υπάρχουσα επιλογή σε αυτήν που χρησιμοποιείται από προεπιλογή στον ιστότοπό σας:</p><p><img src='https://i0.wp.com/ktonanovenkogo.ru/image/kodirovka-utf-8.png' width="100%" loading=lazy loading=lazy></p><p>Στην περίπτωση ενός ιστότοπου σε Joomla 1.5 και νεότερης έκδοσης, καθώς και στην περίπτωση ενός ιστολογίου στο WordPress, θα πρέπει να επιλέξετε την επιλογή αποφυγής εμφάνισης ρωγμών <b>UTF 8 χωρίς BOM</b>. Τι είναι το πρόθεμα BOM;</p><p>Το γεγονός είναι ότι όταν ανέπτυξαν την κωδικοποίηση YUTF-16, για κάποιο λόγο αποφάσισαν να επισυνάψουν σε αυτήν κάτι όπως η δυνατότητα εγγραφής του κώδικα χαρακτήρων τόσο με άμεση σειρά (για παράδειγμα, 0A15) όσο και αντίστροφα (150A) . Και για να καταλάβουν τα προγράμματα ακριβώς με ποια σειρά να διαβάσουν τους κωδικούς, εφευρέθηκε <b>BOM</b>(Byte Order Mark ή, με άλλα λόγια, υπογραφή), που εκφράστηκε με την προσθήκη τριών επιπλέον byte στην αρχή των εγγράφων.</p><p>Στην κωδικοποίηση UTF-8, δεν προβλέπονταν BOM στην κοινοπραξία Unicode, και επομένως η προσθήκη μιας υπογραφής (αυτά τα περιβόητα επιπλέον τρία byte στην αρχή του εγγράφου) απλώς εμποδίζει ορισμένα προγράμματα να διαβάσουν τον κώδικα. Επομένως, κατά την αποθήκευση αρχείων σε UTF, πρέπει πάντα να επιλέγουμε την επιλογή χωρίς BOM (χωρίς υπογραφή). Άρα είσαι εκ των προτέρων <b>προστατέψτε τον εαυτό σας από το να σέρνετε krakozyabrs</b>.</p><p>Αυτό που είναι αξιοσημείωτο είναι ότι ορισμένα προγράμματα στα Windows δεν μπορούν να το κάνουν αυτό (δεν μπορούν να αποθηκεύσουν κείμενο στο UTF-8 χωρίς BOM), για παράδειγμα, το ίδιο περιβόητο Σημειωματάριο των Windows. Αποθηκεύει το έγγραφο σε UTF-8, αλλά εξακολουθεί να προσθέτει την υπογραφή (τρία επιπλέον byte) στην αρχή του. Επιπλέον, αυτά τα byte θα είναι πάντα τα ίδια - διαβάστε τον κώδικα με άμεση σειρά. Αλλά στους διακομιστές, εξαιτίας αυτού του μικρού πράγματος, μπορεί να προκύψει ένα πρόβλημα - θα βγουν απατεώνες.</p><p>Επομένως, σε καμία περίπτωση <b>Μην χρησιμοποιείτε κανονικό σημειωματάριο των Windows</b>για να επεξεργαστείτε έγγραφα στον ιστότοπό σας εάν δεν θέλετε να εμφανιστούν ρωγμές. Θεωρώ ότι το ήδη αναφερθέν πρόγραμμα επεξεργασίας Notepad++ είναι η καλύτερη και απλούστερη επιλογή, η οποία πρακτικά δεν έχει μειονεκτήματα και αποτελείται μόνο από πλεονεκτήματα.</p><p>Στο Notepad++, όταν επιλέγετε μια κωδικοποίηση, θα έχετε την επιλογή να μετατρέψετε κείμενο σε κωδικοποίηση UCS-2, η οποία είναι πολύ κοντά στη φύση του με το πρότυπο Unicode. Επίσης στο Σημειωματάριο θα είναι δυνατή η κωδικοποίηση κειμένου σε ANSI, δηλ. σε σχέση με τη ρωσική γλώσσα, αυτό θα είναι το Windows 1251, το οποίο ήδη περιγράψαμε από πού προέρχονται αυτές οι πληροφορίες;</p><p>Είναι καταχωρημένο στο μητρώο του λειτουργικού σας συστήματος Windows - ποια κωδικοποίηση να επιλέξετε στην περίπτωση του ANSI, ποια να επιλέξετε στην περίπτωση OEM (για τη ρωσική γλώσσα θα είναι CP866). Εάν ορίσετε άλλη προεπιλεγμένη γλώσσα στον υπολογιστή σας, τότε αυτές οι κωδικοποιήσεις θα αντικατασταθούν με παρόμοιες από την κατηγορία ANSI ή OEM για την ίδια γλώσσα.</p><p>Αφού αποθηκεύσετε το έγγραφο στο Notepad++ στην κωδικοποίηση που χρειάζεστε ή ανοίξετε το έγγραφο από τον ιστότοπο για επεξεργασία, μπορείτε να δείτε το όνομά του στην κάτω δεξιά γωνία του προγράμματος επεξεργασίας:</p><p><b>Για αποφυγή κοκκινίλων</b>Εκτός από τις ενέργειες που περιγράφονται παραπάνω, θα είναι χρήσιμο να γράψετε πληροφορίες σχετικά με αυτήν την κωδικοποίηση στην κεφαλίδα του πηγαίου κώδικα όλων των σελίδων του ιστότοπου, ώστε να μην υπάρχει σύγχυση στον διακομιστή ή στον τοπικό κεντρικό υπολογιστή.</p><p>Γενικά, όλες οι γλώσσες σήμανσης υπερκειμένου εκτός από το Html χρησιμοποιούν μια ειδική δήλωση xml, η οποία καθορίζει την κωδικοποίηση κειμένου.</p><p> <?xml version="1.0" encoding="windows-1251"?> </p><p>Πριν αναλύσει τον κώδικα, το πρόγραμμα περιήγησης γνωρίζει ποια έκδοση χρησιμοποιείται και πώς ακριβώς χρειάζεται να ερμηνεύσει τους κωδικούς χαρακτήρων αυτής της γλώσσας. Αλλά αυτό που είναι αξιοσημείωτο είναι ότι εάν αποθηκεύσετε το έγγραφο στο προεπιλεγμένο Unicode, τότε αυτή η δήλωση xml μπορεί να παραλειφθεί (η κωδικοποίηση θα θεωρείται UTF-8 εάν δεν υπάρχει BOM ή UTF-16 εάν υπάρχει BOM).</p><p>Στην περίπτωση ενός εγγράφου γλώσσας Html, η κωδικοποίηση χρησιμοποιείται για να υποδείξει <b>Μεταστοιχείο</b>, το οποίο είναι γραμμένο μεταξύ των ετικετών Head ανοίγματος και κλεισίματος:</p><p> <head> ... <meta charset="utf-8"> ... </head> </p><p>Αυτή η καταχώρηση είναι αρκετά διαφορετική από αυτή που εγκρίθηκε, αλλά είναι πλήρως συμβατή με το νέο πρότυπο Html 5 που εισάγεται σιγά σιγά και θα γίνει πλήρως κατανοητό σωστά από όλα τα προγράμματα περιήγησης που χρησιμοποιούνται αυτήν τη στιγμή.</p><p>Θεωρητικά, θα ήταν καλύτερο να τοποθετήσετε ένα στοιχείο Meta που να υποδεικνύει την κωδικοποίηση του εγγράφου Html <b>όσο πιο ψηλά γίνεται στην κεφαλίδα του εγγράφου</b>έτσι ώστε τη στιγμή που θα συναντήσετε τον πρώτο χαρακτήρα στο κείμενο όχι από το βασικό ANSI (που διαβάζονται πάντα σωστά και σε οποιαδήποτε παραλλαγή), το πρόγραμμα περιήγησης θα πρέπει να έχει ήδη πληροφορίες σχετικά με τον τρόπο ερμηνείας των κωδικών αυτών των χαρακτήρων.</p> <p>Καλή σου τύχη! Τα λέμε σύντομα στις σελίδες του ιστότοπου του ιστολογίου</p><blockquote>Μπορείτε να παρακολουθήσετε περισσότερα βίντεο μεταβαίνοντας στο</blockquote>");"><br><img src='https://i0.wp.com/ktonanovenkogo.ru/wp-content/uploads/video/image/gravitatciia-ne-rabotaet.jpg' width="100%" loading=lazy loading=lazy><p>Μπορεί να σας ενδιαφέρει</p><p><img src='https://i2.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/url.jpg' width="100%" loading=lazy loading=lazy><span>Τι είναι οι διευθύνσεις URL, σε τι διαφέρουν οι απόλυτοι και οι σχετικοί σύνδεσμοι για έναν ιστότοπο;</span> <br><img src='https://i2.wp.com/ktonanovenkogo.ru/wp-content/uploads/2014/05/openserver.jpg' width="100%" loading=lazy loading=lazy><span>OpenServer - ένας σύγχρονος τοπικός διακομιστής και ένα παράδειγμα του τρόπου χρήσης του για την εγκατάσταση του WordPress σε έναν υπολογιστή</span> <br><img src='https://i1.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/chmod.jpg' width="100%" loading=lazy loading=lazy><span>Τι είναι το Chmod, ποια δικαιώματα να εκχωρήσετε σε αρχεία και φακέλους (777, 755, 666) και πώς να το κάνετε μέσω PHP</span> <br><img src='https://i1.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/poisk-na-saite.jpg' width="100%" loading=lazy loading=lazy><span>Αναζήτηση Yandex ανά ιστότοπο και ηλεκτρονικό κατάστημα</p> <p>Εάν η κωδικοποίηση είναι λανθασμένη, ολόκληρος ο ιστότοπος ή μέρος του εμφανίζεται ως "kryapozyablov", δηλ. περίεργοι χαρακτήρες που κάνουν το κείμενο δυσανάγνωστο. Αυτή η κατάσταση μπορεί να προκύψει εάν η κωδικοποίηση του διακομιστή web δεν έχει ρυθμιστεί σωστά ή εάν δεν υπάρχουν ρυθμίσεις. Ας εξετάσουμε πιθανές επιλογές και τρόπους επίλυσης προβλημάτων</p> <h2>Εσφαλμένη κωδικοποίηση σελίδας HTML <br></h2> <p>Ας δημιουργήσουμε ένα δοκιμαστικό αρχείο:</p><p>Sudo gedit /var/www/html/encoding.html</p><p>Ας αντιγράψουμε σε αυτό:</p><p> <html> <head> <title>Έλεγχος κωδικοποίησης



Ας ανοίξουμε αυτό το αρχείο στο πρόγραμμα περιήγησης

Όπως μπορείτε να δείτε, η κωδικοποίηση εντοπίζεται λανθασμένα από το πρόγραμμα περιήγησης:

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

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

Έλεγχος κωδικοποίησης

Δοκιμή αρχείου για έλεγχο κωδικοποίησης



Όπως μπορούμε να δούμε στο παρακάτω στιγμιότυπο οθόνης, το πρόβλημα επιλύθηκε:

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

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

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

Εάν αρχεία .htaccessενεργοποιημένα από τις ρυθμίσεις Apache, αυτά τα αρχεία μπορούν να χρησιμοποιηθούν για τον καθορισμό της κωδικοποίησης των σελίδων που αποστέλλονται από τον διακομιστή Ιστού. Για να ενεργοποιήσετε την υποστήριξη αρχείων .htaccessστο αρχείο διαμόρφωσης Apache ( /etc/apache2/apache2.conf) βρείτε μια ομάδα γραμμών

Επιλογές Ευρετήρια FollowSymLinks AllowOverride Κανένα Απαιτείται η παραχώρηση όλων

Και αντικαταστήστε το

Allow Override None

Allow Override All

Μετά από αυτό, ο διακομιστής πρέπει να επανεκκινηθεί.

Το Sudo systemctl επανεκκινεί το apache2.service

Αρχείο .htaccessπρέπει να τοποθετηθεί στον ίδιο κατάλογο με τον ιστότοπο. Ο ιστότοπός μου φιλοξενείται στον ριζικό κατάλογο του διακομιστή ιστού. Αν έχετε το ίδιο, τότε τώρα στον φάκελο /var/www/html/δημιουργήστε ένα αρχείο .htaccessκαι προσθέστε την οδηγία σε αυτό AddDefaultCharsetμετά την οποία υποδεικνύεται η επιθυμητή κωδικοποίηση. Παραδείγματα

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

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

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

Το σύνολο των αρχείων μπορεί να είναι οτιδήποτε, για παράδειγμα:

AddCharset utf-8 .html .css .php .txt .js

Η επόμενη επιλογή είναι μια εναλλακτική και σας επιτρέπει επίσης να ορίσετε την κωδικοποίηση για αρχεία συγκεκριμένου τύπου που απαιτεί να είναι ενεργοποιημένη mod_headers:

Σύνολο κεφαλίδων Content-Type "text/html; charset=utf-8"

Μια άλλη επιλογή που μπορεί επίσης να χρησιμοποιηθεί στο αρχείο .htaccessγια να ορίσετε την κωδικοποίηση UTF-8:

IndexOptions +Charset=UTF-8

Εάν ο ιστότοπος είναι σε PHP, τότε μπορεί επιπλέον να χρειαστεί να αντιγράψετε την κωδικοποίηση με php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

Αντί να δημιουργήσετε ένα αρχείο .htaccess, μπορείτε να ορίσετε την κωδικοποίηση στο αρχείο διαμόρφωσης του διακομιστή web. Για το Apache CentOS/Fedora αυτό είναι το αρχείο httpd.conf και στο Debian/Ubuntu αυτό είναι το αρχείο apache2.conf. Προσθέστε την ακόλουθη γραμμή για να ορίσετε την κωδικοποίηση και επανεκκινήστε τον διακομιστή web για να τεθούν σε ισχύ οι αλλαγές:

AddDefaultCharset UTF-8

Πώς να ρυθμίσετε την κωδικοποίηση UTF-8 στην PHP

Στο σενάριο PHP, η κωδικοποίηση έχει οριστεί σε επί κεφαλής, Για παράδειγμα:

Header("Content-Type: charset=utf-8");

Συνήθως, μαζί με την κωδικοποίηση, υποδεικνύεται και ο τύπος περιεχομένου (στο παράδειγμα, η επιλογή για μια σελίδα HTML):

Header("Content-Type: text/html; charset=utf-8");

Μια άλλη επιλογή για ροή RSS:

Header("Content-type: text/xml; charset=utf-8");

Να θυμάστε ότι η συνάρτηση επί κεφαλήςπρέπει να κληθεί πριν από οποιαδήποτε έξοδο στο πρόγραμμα περιήγησης. Διαφορετικά (αν έχει ήδη γίνει έξοδος στο πρόγραμμα περιήγησης), τότε οι κεφαλίδες έχουν ήδη σταλεί. Προφανώς, σε αυτή την περίπτωση δεν είναι πλέον δυνατή η αλλαγή τους. Εάν εξαγόταν ένα μήνυμα σφάλματος στο πρόγραμμα περιήγησης, τότε οι κεφαλίδες έχουν ήδη σταλεί και η χρήση της κεφαλίδας θα προκαλέσει σφάλμα. Για να ελέγξετε εάν οι κεφαλίδες έχουν ήδη αποσταλεί, χρησιμοποιήστε το headers_sent.

Η περιγραφόμενη μέθοδος λειτουργεί μόνο όταν το σενάριο PHP δημιουργεί πλήρως το περιεχόμενο της σελίδας. Θα πρέπει να αποθηκεύσετε στατικές σελίδες (όπως html) σε κωδικοποίηση utf-8. Οι περισσότεροι διακομιστές Ιστού λαμβάνουν υπόψη την κωδικοποίηση του αρχείου και προσθέτουν μια κεφαλίδα ανάλογα. Στην πραγματικότητα, η αποθήκευση ενός αρχείου PHP σε κωδικοποίηση utf-8 θα οδηγήσει στο ίδιο αποτέλεσμα.

Εσφαλμένη κωδικοποίηση των αποτελεσμάτων από τη βάση δεδομένων MySQL

Εάν ο ιστότοπός σας αποτελείται από ένα στατικό μέρος (πρότυπο) και ένα δυναμικό τμήμα, το οποίο σχηματίζεται από δεδομένα που λαμβάνονται από τη βάση δεδομένων, τότε μπορεί να προκύψει μια κατάσταση όταν μέρος του ιστότοπου έχει τη σωστή κωδικοποίηση και ένα άλλο μέρος του ιστότοπου έχει λάθος ένας. Σε αυτήν την περίπτωση, είναι άχρηστο να αλλάξετε τις ρυθμίσεις του διακομιστή web - αφού παρόλα αυτά, μέρος της σελίδας θα έχει λανθασμένη κωδικοποίηση.

Πρέπει να ξεκινήσετε προσδιορίζοντας την κωδικοποίηση των πινάκων σας. Μπορείτε να κοιτάξετε phpMyAdmin:

Προσοχή στη στήλη " Σύγκριση", είσοδος " utf8_unicode_ci" σημαίνει ότι χρησιμοποιείται η κωδικοποίηση UTF-8.

Μπορείτε να συνδεθείτε στο MySQL DBMS και να ελέγξετε την κωδικοποίηση των πινάκων χωρίς phpMyAdmin. Για αυτό:

Mysql -u root -p

Εάν ξεχάσατε το όνομα της βάσης δεδομένων, τότε εκτελέστε την εντολή:

ΕΜΦΑΝΙΣΗ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ.

Ας υποθέσουμε ότι θέλω να αναζητήσω την κωδικοποίηση για πίνακες στη βάση δεδομένων information_schema

USE information_schema;

Εάν ξεχάσατε τα ονόματα των τραπεζιών, εκτελέστε:

ΕΜΦΑΝΙΣΗ ΠΛΗΡΗΣ ΣΤΗΛΩΝ ΑΠΟ το όνομα_του πίνακα.

Για παράδειγμα:

ΕΜΦΑΝΙΣΗ ΠΛΗΡΩΝ ΣΤΗΛΩΝ ΑΠΟ GLOBAL_STATUS.

Θα δείτε κάτι σαν αυτό:

Βλέπε στήλη Αντιπαραβολή. Στην περίπτωσή μου εκεί utf8_general_ci, είναι σαν utf8_unicode_ci, κωδικοποίηση UTF-8. Παρεμπιπτόντως, αν δεν ξέρετε ποια είναι η διαφορά μεταξύ των κωδικοποιήσεων utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, και επίσης ποια κωδικοποίηση να επιλέξετε για τη βάση δεδομένων MySQL, και στη συνέχεια κοιτάξτε.

Τώρα που γνωρίζουμε την κωδικοποίηση (στην περίπτωσή μου είναι UTF-8), κάθε φορά που συνδέεστε στο MySQL DBMS πρέπει να εκτελείτε ερωτήματα διαδοχικά:

ΣΕΤ ΟΝΟΜΑΤΩΝ UTF8 ΣΕΤ ΣΕΤ ΧΑΡΑΚΤΗΡΩΝ UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8

Στην PHP αυτό μπορεί να γίνει κάπως έτσι:

$this->mysqli = new mysqli($server, $username, $password, $basename); if ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "Σφάλμα σύνδεσης (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"] ) $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET character_set_client = UTF8"); $this->mysqli->query("SET character_set_connection = UTF8"); $this->mysqli->query("SET character_set_results = UTF8");

σημειώστε ότι UTF8πρέπει να το αντικαταστήσετε με την κωδικοποίηση που χρησιμοποιείται για τους πίνακες σας.

Αλλαγή κωδικοποίησης αρχείων

Εάν αποφασίσετε να πάτε αντίθετα και αντί να εγκαταστήσετε μια νέα κωδικοποίηση, αλλάξτε την κωδικοποίηση των αρχείων σας και, στη συνέχεια, δείτε το άρθρο "". Σας λέει πώς μπορείτε να μάθετε την τρέχουσα κωδικοποίηση των αρχείων και πώς να μετατρέψετε αρχεία σε οποιαδήποτε κωδικοποίηση (όχι μόνο UTF-8).

Πώς να μάθετε τι κωδικοποίηση στέλνει ο διακομιστής

Εάν θέλετε να μάθετε ποιες ρυθμίσεις κωδικοποίησης έχει ο διακομιστής Ιστού (τι κωδικοποίηση στέλνει σε κεφαλίδες), χρησιμοποιήστε την ακόλουθη εντολή:

Curl URL -s -o /dev/null -D /dev/stdout | grep -E "σύνολο χαρακτήρων"

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

Curl https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "σύνολο χαρακτήρων"

Ποια κωδικοποίηση να επιλέξετε για έναν ιστότοπο

Τυχόν αριθμοί (εντός ορισμένων ορίων) στη μνήμη του υπολογιστή κωδικοποιούνται ως αριθμοί στο δυαδικό σύστημα αριθμών. Για να γίνει αυτό, υπάρχουν απλοί και σαφείς κανόνες μετάφρασης. Ωστόσο, σήμερα ο υπολογιστής χρησιμοποιείται πολύ ευρύτερα από ό,τι ως εκτελεστής υπολογισμών έντασης εργασίας. Για παράδειγμα, πληροφορίες κειμένου και πολυμέσων αποθηκεύονται στη μνήμη του υπολογιστή. Άρα προκύπτει το πρώτο ερώτημα:

Πώς αποθηκεύονται οι χαρακτήρες (γράμματα) στη μνήμη του υπολογιστή;

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

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

Ωστόσο, υπάρχουν πολλά αλφάβητα στον κόσμο (αγγλικά, ρωσικά, κινέζικα κ.λπ.). Το επόμενο ερώτημα λοιπόν είναι:

Πώς να κωδικοποιήσετε όλα τα αλφάβητα που χρησιμοποιούνται σε έναν υπολογιστή;

Για να απαντήσουμε σε αυτό το ερώτημα, ας πάρουμε την ιστορική διαδρομή.

Στη δεκαετία του '60 του 20ου αιώνα, το Αμερικανικό Εθνικό Ινστιτούτο Προτύπων (ANSI) ανέπτυξε έναν πίνακα κωδικοποίησης χαρακτήρων, ο οποίος στη συνέχεια χρησιμοποιήθηκε σε όλα τα λειτουργικά συστήματα. Αυτός ο πίνακας ονομάζεται ASCII (American Standard Code for Information Interchange). Λίγο αργότερα, εμφανίστηκε μια εκτεταμένη έκδοση του ASCII.

Σύμφωνα με τον πίνακα κωδικοποίησης ASCII, εκχωρείται 1 byte (8 bit) για την αναπαράσταση ενός χαρακτήρα. Ένα σύνολο 8 κελιών μπορεί να λάβει 28 = 256 διαφορετικές τιμές. Οι πρώτες 128 τιμές (από 0 έως 127) είναι σταθερές και αποτελούν το λεγόμενο κύριο μέρος του πίνακα, το οποίο περιλαμβάνει δεκαδικούς αριθμούς, γράμματα του λατινικού αλφαβήτου (κεφαλαία και πεζά), σημεία στίξης (περίοδος, κόμμα, παρένθεση , κ.λπ.), καθώς και κενά και διάφορους χαρακτήρες υπηρεσίας (καρτέλα, τροφοδοσία γραμμής κ.λπ.). Οι τιμές από 128 έως 255 αποτελούν ένα επιπλέον μέρος του πίνακα, όπου συνηθίζεται να κωδικοποιούνται χαρακτήρες από εθνικά αλφάβητα.

Δεδομένου ότι υπάρχουν τόσα πολλά εθνικά αλφάβητα, οι εκτεταμένοι πίνακες ASCII διατίθενται σε πολλές παραλλαγές. Ακόμη και για τη ρωσική γλώσσα, υπάρχουν αρκετοί πίνακες κωδικοποίησης (τα Windows-1251 και τα Koi8-r είναι κοινά). Όλα αυτά δημιουργούν πρόσθετες δυσκολίες. Για παράδειγμα, στέλνουμε ένα γράμμα γραμμένο σε μια κωδικοποίηση και ο παραλήπτης προσπαθεί να το διαβάσει σε μια άλλη. Ως αποτέλεσμα, βλέπει krakozyabry. Επομένως, ο αναγνώστης πρέπει να εφαρμόσει διαφορετικό πίνακα κωδικοποίησης για το κείμενο.

Υπάρχει ένα άλλο πρόβλημα. Τα αλφάβητα ορισμένων γλωσσών έχουν πάρα πολλούς χαρακτήρες για να χωρέσουν στις καθορισμένες θέσεις 128 έως 255 του συνόλου χαρακτήρων ενός byte.

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

Για την άμεση επίλυση αυτών των προβλημάτων, αναπτύχθηκε το Unicode.

Πρότυπο κωδικοποίησης χαρακτήρων Unicode

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

Το Unicode παρέχει 31 bit (4 byte μείον ένα bit) για την κωδικοποίηση χαρακτήρων. Ο αριθμός των πιθανών συνδυασμών δίνει έναν απίστευτο αριθμό: 231 = 2.147.483.684 (δηλαδή πάνω από δύο δισεκατομμύρια). Επομένως, το Unicode περιγράφει τα αλφάβητα όλων των γνωστών γλωσσών, ακόμη και των «νεκρών» και των φανταστικών, και περιλαμβάνει πολλούς μαθηματικούς και άλλους ειδικούς χαρακτήρες. Ωστόσο, η χωρητικότητα πληροφοριών του Unicode 31-bit εξακολουθεί να είναι πολύ μεγάλη. Επομένως, η συντομευμένη έκδοση 16 bit (216 = 65.536 τιμές) χρησιμοποιείται συχνότερα, όπου κωδικοποιούνται όλα τα σύγχρονα αλφάβητα.

Στο Unicode, οι πρώτοι 128 κωδικοί είναι ίδιοι με τον πίνακα ASCII.



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: