Faýllary Linux-da UTF-8 kodlamaga nädip öwürmeli


Bu gollanmada haýsy nyşan kodlamagyny düşündireris we buýruk setiri guralyny ulanyp faýllary bir nyşan kodlamasyndan beýlekisine öwürmegiň birnäçe mysallaryny görkezeris. Soň bolsa, Linux-daky UTF-8 kodlamasyna islendik nyşan toplumyndan (çyzgydan) birnäçe faýly nädip öwrüp boljakdygyny öwreneris.

Mümkin, eýýäm ýadyňyzda bolsa gerek, kompýuter harplara, sanlara ýa-da adamlar hökmünde bitlerden başga düşünip biljek başga bir zadymyza düşünmeýär we saklamaýar. Birneme diňe iki sany ähtimal baha bar, ýagny 0 ýa-da 1 , true ýa-da false , hawa ýa-da ýok . Harplar, sanlar, şekiller ýaly beýleki zatlaryň hemmesi kompýuteriň işlemegi üçin bitlerde görkezilmelidir.

Simpleönekeý sözler bilen aýdylanda, nyşanlary kodlamak, çig nollary we nyşanlary hakyky nyşanlara nädip düşündirmelidigini kompýuterde habar bermegiň usulydyr, bu ýerde bir belgi sanlar toplumy bilen görkezilýär. Faýlda tekst ýazanymyzda, emele gelen sözler we sözlemler dürli nyşanlardan taýýarlanýar we nyşanlar çyzgyda düzülýär.

Bu ýerde ASCII, ANSI, Unicode ýaly dürli kodlaýyş shemalary bar. Aşakda ASCII kodlamagyň mysaly.

Character  bits
A               01000001
B               01000010

Linux-da, iconv buýruk setiri guraly teksti kodlamagyň bir görnüşinden beýlekisine öwürmek üçin ulanylýar.

Faýl buýrugyny ulanyp, faýlyň kodlanmagyny aşakdaky mysallardaky ýaly mime görnüşli simleri çap etmäge mümkinçilik berýän -i ýa-da --mime baýdagyny ulanyp barlap bilersiňiz:

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

Iconv ulanmagyň sintaksisi aşakdaky ýaly:

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

Nirede -f ýa-da --from-code giriş kodlamagy aňladýar we -t ýa-da - kodlamak kesgitleýär çykyş kodlamagy.

Kodlanan nyşanlaryň hemmesini bellemek üçin aşakdaky buýrugy işlediň:

$ iconv -l 

Faýllary UTF-8-den ASCII kodlamaga öwüriň

Indiki, bir kodlaýyş shemasyndan beýlekisine nädip öwrülmelidigini öwreneris. Aşakdaky buýruk ISO-8859-1-den UTF-8 kodlamaga öwrülýär.

Nyşanlary öz içine alýan input.file atly bir faýly gözden geçiriň:

� � � �

Faýldaky nyşanlaryň kodlanmagyny barlamakdan başlalyň we faýlyň mazmunyny göreliň. Closeakyn, ähli nyşanlary ASCII kodlamaga öwrüp bileris.

Iconv buýrugyny işledenimizden soň, çykyş faýlynyň mazmunyny we aşakdaky ýaly simwollaryň täze kodlanmagyny barlaýarys.

$ 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 

Bellik: Kodlamaga /IGNORE setiri goşulsa, öwrüp bolmaýan simwollar we öwrülden soň ýalňyşlyk görkezilýär.

Againene-de, ýokardaky mysalda (ASCII/TRANSLIT) bolşy ýaly kodlamaga /TRANSLIT goşulýar öýdýän, öwrülen nyşanlar zerur bolanda terjime edilýär. Bir nyşan nyşan nyşanynda görkezilip bilinmeýän halatynda, bir ýa-da birnäçe meňzeş simwol arkaly takmynan kesgitlenip bilner.

Netijede, terjime edilip bilinmeýän we nyşan nyşanlarynda bolmadyk islendik nyşan, çykyşdaky (?) sorag belgisi bilen çalşyrylýar.

Birnäçe faýly UTF-8 kodlamaga öwüriň

Esasy mowzugymyza gaýdyp gelmek, katalogdaky köp ýa-da ähli faýllary UTF-8 kodlamaga öwürmek üçin, encoding.sh atly kiçijik gabyk skriptini aşakdaky ýaly ýazyp bilersiňiz:

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

Faýly ýazdyryň, soňra skripti ýerine ýetirip bilersiňiz. Faýllaryňyzyň ( * .txt ) ýerleşýän katalogyndan işlediň.

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

Üns beriň: Berlen kodlamadan beýlekisine köp faýly umumy öwürmek üçin bu skripti ulanyp bilersiňiz, diňe FROM_ENCODING we TO_ENCODING üýtgeýjiniň bahalary bilen oýnap bilersiňiz. çykyş faýlyň adyny ýatdan çykarmak \& # 36 {file% .txt} .utf8.converted\.

Has giňişleýin maglumat üçin iconv man sahypasyna göz aýlaň.

$ man iconv

Bu gollanmany jemlemek üçin kodlamaga düşünmek we bir nyşan kodlaýyş shemasyndan beýlekisine nädip öwürmek her bir kompýuter ulanyjysy üçin tekst bilen iş salyşmak üçin programmistler üçin has zerur bilimdir.

Ahyrynda, islendik sorag ýa-da pikir alyşmak üçin aşakdaky teswir bölümini ulanyp, biziň bilen habarlaşyp bilersiňiz.