Cum să convertiți fișierele în codificare UTF-8 în Linux


În acest ghid, vom descrie ce codificare a caracterelor și vom acoperi câteva exemple de conversie a fișierelor de la o codificare de caractere la alta folosind un instrument de linie de comandă. Apoi, în sfârșit, ne vom uita la cum să convertim mai multe fișiere din orice set de caractere (charset) în codificare UTF-8 în Linux.

După cum probabil v-ați gândit deja, un computer nu înțelege și nu stochează litere, numere sau orice altceva pe care noi, oamenii, îl putem percepe, cu excepția biților. Un bit are doar două valori posibile, adică 0 sau 1, adevărat sau fals, da sau nu. Orice altceva, cum ar fi litere, numere, imagini trebuie să fie reprezentat în biți pentru ca un computer să poată fi procesat.

În termeni simpli, codificarea caracterelor este o modalitate de a informa un computer cum să interpreteze zerourile și unurile brute în caractere reale, unde un caracter este reprezentat de un set de numere. Când introducem text într-un fișier, cuvintele și propozițiile pe care le formăm sunt gătite din caractere diferite, iar caracterele sunt organizate într-un set de caractere.

Există diverse scheme de codare, cum ar fi ASCII, ANSI, Unicode, printre altele. Mai jos este un exemplu de codare ASCII.

Character  bits
A               01000001
B               01000010

În Linux, instrumentul de linie de comandă iconv este folosit pentru a converti textul dintr-o formă de codificare în alta.

Puteți verifica codarea unui fișier utilizând comanda fișier, utilizând marcajul -i sau --mime care permite tipărirea tipului mime șir ca în exemplele de mai jos:

file -i Car.java
file -i CarDriver.java

Sintaxa pentru utilizarea iconv este următoarea:

iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile 

Unde -f sau --from-code înseamnă codificarea de intrare și -t sau --to-encoding specifică codificarea ieșirii.

Pentru a lista toate seturile de caractere codificate cunoscute, executați comanda de mai jos:

iconv -l 

Convertiți fișierele din UTF-8 în codificare ASCII

În continuare, vom învăța cum să convertim de la o schemă de codificare la alta. Comanda de mai jos transformă codarea ISO-8859-1 în codificarea UTF-8.

Luați în considerare un fișier numit input.file care conține caracterele:


� � � �

Să începem prin a verifica codarea caracterelor din fișier și apoi să vedem conținutul fișierului. Îndeaproape, putem converti toate caracterele la codificare ASCII.

După rularea comenzii iconv, verificăm apoi conținutul fișierului de ieșire și noua codificare a caracterelor, ca mai jos.

file -i input.file
cat input.file 
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file 
file -i out.file 

Notă: în cazul în care șirul //IGNORE este adăugat la codificare, caracterele care nu pot fi convertite și este afișată o eroare după conversie.

Din nou, presupunând că șirul //TRANSLIT este adăugat la codificare ca în exemplul de mai sus (ASCII//TRANSLIT), caracterele care sunt convertite sunt transliterate după cum este necesar și dacă este posibil . Ceea ce implică, în cazul în care un personaj nu poate fi reprezentat în setul de caractere țintă, acesta poate fi aproximat prin unul sau mai multe caractere similare.

În consecință, orice caracter care nu poate fi transliterat și nu se află în setul de caractere țintă este înlocuit cu un semn de întrebare (?) în rezultat.

Convertiți mai multe fișiere în codificare UTF-8

Revenind la subiectul nostru principal, pentru a converti mai multe sau toate fișierele dintr-un director în codificare UTF-8, puteți scrie un mic script shell numit encoding.sh după cum urmează:

#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
#loop to convert multiple files 
for  file  in  *.txt; do
     $CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

Salvați fișierul, apoi faceți scriptul executabil. Rulați-l din directorul în care se află fișierele dvs. (*.txt).

chmod  +x  encoding.sh
./encoding.sh

Important: puteți folosi acest script și pentru conversia generală a mai multor fișiere de la o codificare dată la alta, pur și simplu jucați-vă cu valorile FROM_ENCODING și variabila TO_ENCODING, fără a uita numele fișierului de ieșire „$ {file%.txt}.utf8.converted”.

Pentru mai multe informații, consultați pagina de manual iconv.

man iconv

Pentru a rezuma acest ghid, înțelegerea codificării și modul de conversie de la o schemă de codificare a caracterelor la alta este cunoștințe necesare pentru fiecare utilizator de computer, mai ales pentru programatori atunci când vine vorba de a se ocupa de text.

În cele din urmă, puteți lua legătura cu noi folosind secțiunea de comentarii de mai jos pentru orice întrebări sau feedback.