Ισχυροί δείκτες (αλλά όχι εγγυήσεις):
* byte Mark (bom): Ένα αρχείο UTF-8 * μπορεί * να ξεκινήσει με ένα BOM (σήμα παραγγελίας), το οποίο είναι η ακολουθία `EF BB BF` σε δεκαεξαδικό. Η παρουσία αυτού του BOM είναι μια πολύ ισχυρή πρόταση (αλλά όχι εγγύηση) ότι το αρχείο κωδικοποιείται ως UTF-8. Πολλοί συντάκτες το προσθέτουν αυτόματα, αλλά μερικοί δεν το κάνουν, και η παρουσία του μπορεί να είναι ακόμη και προβληματική σε ορισμένα πλαίσια (προκαλώντας απροσδόκητους χαρακτήρες στην αρχή).
* Εύρος χαρακτήρων: Εξετάστε τις τιμές byte των περιεχομένων του αρχείου. Ενώ το UTF-8 μπορεί να αντιπροσωπεύει οποιοδήποτε χαρακτήρα Unicode, οι ακολουθίες byte είναι δομημένες. Εάν συναντήσετε ακολουθίες byte εκτός από αυτό που επιτρέπεται στο UTF-8 (π.χ. μη έγκυρες αλληλουχίες πολλαπλών byte), είναι σίγουρα * όχι * UTF-8. Ωστόσο, όλα τα * bytes που βρίσκονται εντός του επιτρεπόμενου εύρους δεν εγγυώνται το UTF-8. Θα μπορούσατε να έχετε ένα δυαδικό αρχείο που περιέχει τυχαία μόνο έγκυρες ακολουθίες byte UTF-8.
Μέθοδοι για να ελέγξετε:
1. Χρησιμοποιήστε έναν επεξεργαστή κειμένου με υποστήριξη unicode: Οι περισσότεροι σύγχρονοι συντάκτες κειμένου (σημειωματάριο ++, υψηλό κείμενο, κώδικας VS κ.λπ.) θα ανιχνεύουν αυτόματα την κωδικοποίηση ενός αρχείου όταν το ανοίγετε. Εμφανίζουν συχνά την κωδικοποίηση στη γραμμή κατάστασης ή τις ιδιότητες αρχείου. Αυτή είναι η ευκολότερη και πιο αξιόπιστη μέθοδος για απλά αρχεία κειμένου.
2. Χρησιμοποιήστε την εντολή `file` (linux/macOS): Η εντολή `αρχείου` μπορεί συχνά να εντοπίσει την κωδικοποίηση ενός αρχείου κειμένου. Για παράδειγμα:
`` `bash
Αρχείο myfile.txt
`` `
Αυτό μπορεί να εξάγει κάτι σαν:`myfile.txt:utf-8 unicode text` ή` myfile.txt:ascii text '. Σημειώστε ότι η ακρίβεια εξαρτάται από τα ευρετικά της εντολής «αρχείου», η οποία μπορεί να μην είναι πάντα τέλεια.
3. Ελέγξτε προγραμματικά (Python): Μπορείτε να γράψετε ένα σύντομο πρόγραμμα για να ελέγξετε για το BOM ή να προσπαθήσετε να αποκωδικοποιήσετε το αρχείο χρησιμοποιώντας το UTF-8. Εάν η αποκωδικοποίηση αποτύχει, δεν είναι UTF-8. Ωστόσο, η επιτυχής αποκωδικοποίηση επίσης δεν αποδεικνύει οριστικά ότι είναι UTF-8.
`` `Python
Εισαγωγή κωδικοποιών
def is_utf8 (όνομα αρχείου):
δοκιμή:
με codecs.open (όνομα αρχείου, 'r', 'utf-8') ως f:
f.read ()
Επιστροφή True # Επιτυχής αποκωδικοποίηση
Εκτός από το UnicodedecodeError:
επιστροφή ψευδών # αποκωδικοποίηση απέτυχε
FileName ="myfile.txt"
αν είναι is_utf8 (όνομα αρχείου):
εκτύπωση (F "{fileName} είναι πιθανό utf-8 κωδικοποιημένο.")
αλλού:
εκτύπωση (F "{fileName} δεν είναι κωδικοποιημένο UTF-8.")
`` `
Συνοπτικά: Ενώ μπορείτε να πάρετε ισχυρές συμβουλές σχετικά με το αν ένα αρχείο είναι πιθανό utf-8 κωδικοποιημένο, δεν υπάρχει απόλυτη εγγύηση χωρίς πρόσθετο πλαίσιο ή μεταδεδομένα. Η βασιζόμενη στην αυτόματη ανίχνευση ενός κειμένου ή στην εντολή `αρχείου 'είναι συνήθως η πιο πρακτική προσέγγιση. Η προγραμματική προσέγγιση είναι χρήσιμη όταν χρειάζεστε περισσότερο έλεγχο και μπορείτε να χειριστείτε τις εγγενείς αβεβαιότητες.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα