Kif Tikkonverti Fajls għal Kodifikazzjoni UTF-8 fil-Linux


F'din il-gwida, se niddeskrivu liema kodifikazzjoni tal-karattri u nkopru ftit eżempji ta 'konverżjoni ta' fajls minn kodifikazzjoni ta 'karattri għal oħra bl-użu ta' għodda tal-linja tal-kmand. Imbagħad fl-aħħarnett, se nħarsu lejn kif tikkonverti diversi fajls minn kwalunkwe sett ta 'karattri (charset) għal kodifikazzjoni UTF-8 fil-Linux.

Kif forsi diġà għandek f'moħħok, kompjuter ma jifhimx jew jaħżen ittri, numri jew kull ħaġa oħra li aħna bħala bnedmin nistgħu nipperċepixxu ħlief bits. Bit għandu biss żewġ valuri possibbli, jiġifieri jew 0 jew 1, veru jew falz, >iva jew le. Kull ħaġa oħra bħal ittri, numri, immaġini għandha tkun rappreżentata f'bits biex kompjuter jipproċessa.

F'termini sempliċi, il-kodifikazzjoni tal-karattri hija mod kif kompjuter jinforma kif jinterpreta żero u dawk mhux ipproċessati f'karattri attwali, fejn karattru huwa rappreżentat b'sett ta' numri. Meta nittajpja test f'fajl, il-kliem u s-sentenzi li niffurmaw huma msajra minn karattri differenti, u l-karattri jiġu organizzati f'charset.

Hemm diversi skemi ta 'kodifikazzjoni hemmhekk bħal ASCII, ANSI, Unicode fost oħrajn. Hawn taħt hemm eżempju ta 'kodifikazzjoni ASCII.

Character  bits
A               01000001
B               01000010

Fil-Linux, l-għodda tal-linja tal-kmand iconv tintuża biex tikkonverti test minn forma waħda ta 'kodifikazzjoni għal oħra.

Tista' tiċċekkja l-kodifikazzjoni ta' fajl billi tuża l-kmand tal-fajl, billi tuża l-marka -i jew --mime li tippermetti l-istampar ta' string tat-tip mime bħal fl-eżempji hawn taħt:

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

Is-sintassi għall-użu ta' iconv hija kif ġej:

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

Fejn -f jew --from-code tfisser kodifikazzjoni tad-dħul u -t jew --to-encoding jispeċifika kodifikazzjoni tal-output.

Biex telenka s-settijiet ta’ karattri kodifikati magħrufa kollha, mexxi l-kmand hawn taħt:

$ iconv -l 

Ikkonverti Fajls minn UTF-8 għal Kodifikazzjoni ASCII

Sussegwentement, se nitgħallmu kif tikkonverti minn skema ta 'kodifikazzjoni waħda għal oħra. Il-kmand hawn taħt jikkonverti minn ISO-8859-1 għal kodifikazzjoni UTF-8.

Ikkunsidra fajl bl-isem input.file li fih il-karattri:

� � � �

Ejja nibdew billi niċċekkjaw il-kodifikazzjoni tal-karattri fil-fajl u mbagħad ara l-kontenut tal-fajl. Mill-qrib, nistgħu nikkonverti l-karattri kollha għal kodifikazzjoni ASCII.

Wara li tmexxi l-kmand iconv, aħna mbagħad niċċekkjaw il-kontenut tal-fajl tal-output u l-kodifikazzjoni l-ġdida tal-karattri kif hawn taħt.

$ 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 

Nota: F'każ li s-sekwenza //IGNORE tiżdied mal-kodifikazzjoni, karattri li ma jistgħux jiġu kkonvertiti u jiġi muri żball wara l-konverżjoni.

Għal darb'oħra, jekk wieħed jassumi li l-sekwenza //TRANSLIT hija miżjuda mal-kodifikazzjoni bħal fl-eżempju ta' hawn fuq (ASCII//TRANSLIT), il-karattri li qed jiġu kkonvertiti jiġu translitterati kif meħtieġ u jekk possibbli. Li jimplika fil-każ li karattru ma jistax jiġi rappreżentat fis-sett ta 'karattri fil-mira, jista' jiġi approssimat permezz ta 'karattri wieħed jew aktar li jidhru simili.

Konsegwentement, kwalunkwe karattru li ma jistax jiġi translitterat u mhux fis-sett ta’ karattri fil-mira jiġi sostitwit b’marka ta’ mistoqsija (?) fl-output.

Ikkonverti Fajls Multipli għal Kodifikazzjoni UTF-8

Niġu lura għas-suġġett ewlieni tagħna, biex tikkonverti l-fajls multipli jew kollha f'direttorju għal kodifikazzjoni UTF-8, tista 'tikteb script shell żgħir imsejjaħ encoding.sh kif ġej:

#!/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

Issejvja l-fajl, imbagħad agħmel l-iskrittura eżekutibbli. Mexxiha mid-direttorju fejn jinsabu l-fajls tiegħek (*.txt).

$ chmod  +x  encoding.sh
$ ./encoding.sh

Importanti: Tista' wkoll tuża din l-iskrittura għall-konverżjoni ġenerali ta' fajls multipli minn kodifikazzjoni partikolari għal oħra, sempliċement tilgħab mal-valuri tal-varjabbli FROM_ENCODING u TO_ENCODING, mhux tinsa l-isem tal-fajl tal-output \$ {file%.txt}.utf8.converted\.

Għal aktar informazzjoni, ara l-paġna man iconv.

$ man iconv

Fil-qosor din il-gwida, il-fehim tal-kodifikazzjoni u kif tikkonverti minn skema ta 'kodifikazzjoni ta' karattri għal oħra hija għarfien meħtieġ għal kull utent tal-kompjuter aktar u aktar għal programmaturi meta jiġu biex jittrattaw it-test.

Fl-aħħar nett, tista' tagħmel kuntatt magħna billi tuża t-taqsima tal-kummenti hawn taħt għal kwalunkwe mistoqsija jew feedback.