Εντολή iconv στο Linux

Entole Iconv Sto Linux



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

Ας δούμε τώρα το βοηθητικό πρόγραμμα iconv του Linux στην κονσόλα τερματικού του. Έτσι, εκτελούσαμε την εντολή 'iconv' με τη σημαία '-l' για να εμφανίσουμε όλα τα γνωστά και πιο χρησιμοποιούμενα σετ κωδικοποιημένων χαρακτήρων στην οθόνη του τερματικού μας. Θα εμφανίσει τα κωδικοποιημένα σύνολα χαρακτήρων μαζί με τα ψευδώνυμά τους. Μπορείτε να δείτε μια μακρά λίστα κωδικοποιημένων συνόλων χαρακτήρων αφού κάνετε κύλιση προς τα κάτω.







Τώρα, ήρθε η ώρα να ξεκινήσετε με την εφαρμογή της εντολής iconv στο Linux. Πρώτον, χρειαζόμαστε διαφορετικούς τύπους αρχείων στο σύστημά μας για να μετατρέψουμε έναν τύπο αρχείου σε άλλο τύπο. Έτσι, χρησιμοποιούμε το ερώτημα «touch» στο τερματικό της κονσόλας για να δημιουργήσουμε τρία διαφορετικά αρχεία, δηλαδή τύπου Java, τύπο C και τύπο κειμένου. Παραθέτοντας τα τρέχοντα περιεχόμενα του καταλόγου, θα βρείτε τα αρχεία που δημιουργήθηκαν πρόσφατα σε αυτόν.



Μετά από αυτό, θα εξετάσουμε τον τύπο κάθε αρχείου ξεχωριστά χρησιμοποιώντας το ερώτημα 'αρχείο' μαζί με το όνομα κάθε αρχείου. Αυτό το ερώτημα χρειάζεται την επιλογή '-I' για να εμφανίσει τον τύπο του συνόλου χαρακτήρων κωδικοποίησης για κάθε αρχείο ξεχωριστά. Εάν ξεχάσατε να χρησιμοποιήσετε την επιλογή «-I», χρησιμοποιήστε τη σημαία «—mime». Και οι δύο σημαίες «-I» και «—mime» λειτουργούν το ίδιο.



Τώρα, αφού εκτελέσαμε την εντολή 'αρχείο' για το αρχείο τύπου 'txt', πήραμε την κωδικοποίηση τύπου 'US-ASCII'. Ενώ χρησιμοποιείται η ίδια οδηγία για τα αρχεία Java και C, δείχνει ότι και τα δύο αρχεία περιέχουν κωδικοποίηση τύπου «BINARY» χαρακτήρων. Μαζί με αυτό, αυτή η οδηγία δείχνει ότι και τα τρία αυτά αρχεία είναι άδεια.





Τώρα, θα παρουσιάσουμε τη χρήση της εντολής iconv στην κονσόλα για τη μετατροπή ενός συγκεκριμένου αρχείου κωδικοποίησης συνόλου χαρακτήρων σε άλλη κωδικοποίηση συνόλου χαρακτήρων. Πριν από αυτό, πρέπει να προσθέσουμε κάποιο κώδικα ή δεδομένα στα αρχεία μας. Επομένως, προσθέσαμε τον κώδικα Java στο αρχείο 'text.java', τον κώδικα C στο αρχείο 'text.c' και προσθέσαμε δεδομένα κειμένου στο αρχείο 'test.txt'. Το ερώτημα cat χρησιμοποιήθηκε εδώ για την εμφάνιση των περιεχομένων και των τριών αρχείων, όπως παρουσιάζεται παρακάτω:



Τώρα που προσθέσαμε με επιτυχία τα δεδομένα, θα δούμε ξανά την κωδικοποίηση του συνόλου χαρακτήρων αυτών των αρχείων. Έτσι, δοκιμάσαμε την ίδια οδηγία αρχείου μέσα στο κέλυφος με τη σημαία '-I' και τα ονόματα των αρχείων, π.χ. test.txt, test.java και test.c. Η εκτέλεση αυτών των τριών οδηγιών χωριστά και για τα τρία αρχεία δείχνει ότι η κωδικοποίηση συνόλου χαρακτήρων έχει ενημερωθεί για τα αρχεία Java και C, ενώ παραμένει η ίδια για το αρχείο κειμένου, δηλ. US-ASCII. Η κωδικοποίηση των αρχείων Java και C ήταν προηγουμένως 'δυαδική'. τώρα, είναι 'US-ASCII'. Επίσης, δείχνει ότι το αρχείο κειμένου περιέχει δεδομένα απλού κειμένου ενώ τα άλλα δύο αρχεία κώδικα περιέχουν τα σενάρια ως περιεχόμενο.

Ήρθε η ώρα να εκτελέσετε την πραγματική εργασία που απαιτείται για αυτό το άρθρο, δηλαδή να μετατρέψετε μια κωδικοποίηση σε άλλη χρησιμοποιώντας την εντολή iconv στο κέλυφος. Έτσι, χρησιμοποιούσαμε την εντολή 'iconv' στο τερματικό του κελύφους με τα προνόμια 'sudo'. Αυτή η εντολή παίρνει ότι η επιλογή «-f» σημαίνει «από» και η επιλογή «-t» σημαίνει «προς», δηλ. από τη μια κωδικοποίηση στην άλλη.

Μετά την επιλογή '-f', πρέπει να καθορίσετε την κωδικοποίηση που έχει ήδη το αρχείο σας, δηλαδή US-ASCII. Ενώ μετά την επιλογή '-t', πρέπει να καθορίσετε την κωδικοποίηση που θέλετε να αντικαταστήσετε με την παλιά κωδικοποίηση, δηλαδή UNICODE. Πρέπει να καθορίσετε το όνομα ενός αρχείου που χρησιμοποιείται ως πηγή με την επιλογή –o για να δημιουργήσετε την εικόνα του αντικειμένου του. Η εικόνα του αντικειμένου θα ήταν ένα άλλο αρχείο, δηλ. 'new.c', του ίδιου τύπου αλλά με τη νέα κωδικοποίηση και τα ίδια δεδομένα.

Αφού εκτελέσετε την παρακάτω εντολή, θα λάβετε ένα νέο αρχείο στον ίδιο κατάλογο, δηλαδή σύμφωνα με το ερώτημα 'ls'. Τώρα, θα ελέγξουμε για την κωδικοποίηση συνόλου χαρακτήρων ενός νέου αρχείου που δημιουργήθηκε χρησιμοποιώντας την οδηγία iconv. Θα χρησιμοποιήσουμε ξανά την εντολή 'αρχείο' με την επιλογή '-I' και το νέο όνομα αρχείου, δηλ. new.c.

Θα δείτε ότι το σύνολο χαρακτήρων για αυτό το νέο αρχείο ήταν διαφορετικό από το σύνολο χαρακτήρων ενός παλιού αρχείου, δηλαδή το σύνολο χαρακτήρων UTF-16LE. Αυτό συμβαίνει επειδή έχουμε μεταφράσει την κωδικοποίηση US-ASCII στην κωδικοποίηση UNICODE χρησιμοποιώντας την οδηγία iconv για το αρχείο new.c μας. Το ερώτημα 'cat' εμφάνιζε τον ίδιο κωδικό C μέσα στο αρχείο, αλλά ξεκίνησε με ορισμένους χαρακτήρες Unicode, όπως παρουσιάστηκε ήδη.

Με παρόμοιο τρόπο, θα αλλάξουμε την κωδικοποίηση του αρχείου κειμένου test.txt. Η οδηγία αρχείου δείχνει ότι έχει κωδικοποίηση συνόλου χαρακτήρων US-ASCII. Η εντολή iconv έχει χρησιμοποιηθεί με την ίδια μορφή για τη μετατροπή της κωδικοποίησης του αρχείου test.txt από US-ASCII σε TURKISH8. Θα δείτε ότι δεν αλλάζει το US-ASCII σε Τουρκικό.

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

συμπέρασμα

Αυτό το άρθρο εξέτασε πώς να χρησιμοποιήσετε τις οδηγίες iconv Linux για να μετατρέψετε ένα σύνολο χαρακτήρων κωδικοποίησης σε ένα άλλο χρησιμοποιώντας τα ψευδώνυμά τους. Με αυτόν τον τρόπο, έπρεπε να δημιουργήσουμε ορισμένα αρχεία διαφορετικών τύπων.