λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Portable Document Format

Πώς αναγνωρίζετε τη μορφή αρχείου USTF8;

Δεν υπάρχει ενιαίος, ανόητος τρόπος για να προσδιορίσετε οριστικά ένα αρχείο UTF-8 αποκλειστικά από το περιεχόμενό του. Πολλές μορφές αρχείων μπορούν να περιέχουν κωδικοποιημένο κείμενο UTF-8 * μέσα σε *, αλλά το ίδιο το αρχείο δεν είναι εγγενώς "UTF-8" με τρόπο που ένα `.jpg` είναι JPEG. Ωστόσο, υπάρχουν ισχυροί δείκτες:

Ισχυροί δείκτες (αλλά όχι εγγυήσεις):

* 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 κωδικοποιημένο, δεν υπάρχει απόλυτη εγγύηση χωρίς πρόσθετο πλαίσιο ή μεταδεδομένα. Η βασιζόμενη στην αυτόματη ανίχνευση ενός κειμένου ή στην εντολή `αρχείου 'είναι συνήθως η πιο πρακτική προσέγγιση. Η προγραμματική προσέγγιση είναι χρήσιμη όταν χρειάζεστε περισσότερο έλεγχο και μπορείτε να χειριστείτε τις εγγενείς αβεβαιότητες.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα