Bii o ṣe le Yi awọn faili pada si UTF-8 Encoding in Linux


Ninu itọsọna yii, a yoo ṣe apejuwe iru ifaminsi ohun kikọ ati bo awọn apẹẹrẹ diẹ ti yiyipada awọn faili lati ifaminsi ohun kikọ kan si omiiran nipa lilo irinṣẹ laini aṣẹ. Lẹhinna nikẹhin, a yoo wo bi a ṣe le yipada ọpọlọpọ awọn faili lati eyikeyi ohun kikọ ṣeto (charset) si koodu UTF-8 ni Linux.

Bii o ṣe le ni lokan tẹlẹ, kọnputa ko ni oye tabi tọju awọn lẹta, awọn nọmba tabi ohunkohun miiran ti awa bi eniyan le ṣe akiyesi ayafi awọn die. A bit ni awọn iye meji ti o ṣee ṣe, iyẹn jẹ boya 0 tabi 1 , otitọ tabi eke , bẹẹni tabi rara . Gbogbo ohun miiran bii awọn lẹta, awọn nọmba, awọn aworan gbọdọ wa ni ipoduduro ninu awọn idinku fun kọnputa lati ṣiṣẹ.

Ni awọn ọrọ ti o rọrun, ifaminsi ohun kikọ jẹ ọna ti ifitonileti kọnputa kan bi o ṣe le tumọ awọn eedu aise ati eyi sinu awọn kikọ gangan, nibiti a ṣe aṣoju ohun kikọ nipasẹ ṣeto awọn nọmba. Nigbati a ba tẹ ọrọ sinu faili kan, awọn ọrọ ati awọn gbolohun ọrọ ti a ṣe ni jijẹ-lati oriṣiriṣi awọn ohun kikọ, ati awọn kikọ ti ṣeto si apẹrẹ kan.

Awọn ero aiyipada oriṣiriṣi wa ni ita bii ASCII, ANSI, Unicode laarin awọn miiran. Ni isalẹ jẹ apẹẹrẹ ti fifi koodu ASCII ṣe.

Character  bits
A               01000001
B               01000010

Ni Lainos, a lo ọpa laini aṣẹ iconv lati yi ọrọ pada lati oriṣi koodu iwọle kan si omiiran.

O le ṣayẹwo ifaminsi ti faili kan nipa lilo pipaṣẹ faili, nipa lilo Flag -i tabi --mime eyiti o jẹ ki titẹ titẹ okun mime bii ninu awọn apẹẹrẹ isalẹ:

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

Ilana fun lilo iconv jẹ atẹle:

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

Nibiti -f tabi --from-code tumọ si fifi koodu sii ati -t tabi --to-encoding ṣalaye aiyipada fifiranṣẹ.

Lati ṣe atokọ gbogbo awọn iru ohun kikọ ti o mọ koodu, ṣiṣe aṣẹ ni isalẹ:

$ iconv -l 

Yi awọn faili pada lati UTF-8 si aiyipada koodu ASCII

Nigbamii ti, a yoo kọ bi a ṣe le yipada lati ero aiyipada kan si omiiran. Aṣẹ ti o wa ni isalẹ yipada lati ISO-8859-1 si aiyipada koodu UTF-8.

Wo faili kan ti a npè ni input.file eyiti o ni awọn ohun kikọ silẹ ninu:

� � � �

Jẹ ki a bẹrẹ nipa ṣayẹwo koodu iwọle ti awọn ohun kikọ ninu faili naa lẹhinna wo awọn akoonu faili naa. Ni isunmọtosi, a le yipada gbogbo awọn kikọ si fifi koodu ASCII.

Lẹhin ṣiṣe aṣẹ iconv, lẹhinna a ṣayẹwo awọn akoonu ti faili o wu ati aiyipada koodu tuntun ti awọn kikọ bi isalẹ.

$ 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 

Akiyesi: Ni ọran ti okun /IGNORE ti wa ni afikun si aiyipada, awọn ohun kikọ ti ko le yipada ati aṣiṣe ti han lẹhin iyipada.

Lẹẹkansi, ṣebi okun /TRANSLIT ti wa ni afikun si fifi koodu si bi apẹẹrẹ ti o wa loke (ASCII/TRANSLIT), awọn ohun kikọ ti n yipada ti wa ni kikọ bi o ba nilo ati ti o ba ṣeeṣe. Eyiti o tumọ si ninu iṣẹlẹ pe ohun kikọ ko le ṣe aṣoju ninu ṣeto ohun kikọ silẹ ti o fojusi, o le sunmọ nipa ọkan tabi diẹ ẹ sii iru awọn ohun kikọ ti o nwa.

Nitori naa, eyikeyi ohun kikọ ti ko le ṣe itumọ-ọrọ ati pe ko si ninu kikọ ohun kikọ silẹ ni a rọpo pẹlu ami ibeere kan (?) ninu iṣẹjade.

Yi awọn faili lọpọlọpọ pada si UTF-8 Encoding

Ni ipadabọ si akọle akọkọ wa, lati yipada pupọ tabi gbogbo awọn faili ninu itọsọna kan si aiyipada UTF-8, o le kọ iwe afọwọkọ ikarahun kekere kan ti a pe ni encoding.sh bi atẹle:

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

Fipamọ faili naa, lẹhinna jẹ ki iwe afọwọkọ ṣiṣẹ. Ṣiṣe rẹ lati itọsọna nibiti awọn faili rẹ ( * .txt ) wa.

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

Pataki: O tun le lo iwe afọwọkọ yii fun iyipada gbogbogbo ti awọn faili pupọ lati ọkan ti a fun ni koodu si omiiran, nirọrun ṣere ni ayika pẹlu awọn iye ti iyipada FROM_ENCODING ati TO_ENCODING , kii ṣe igbagbe orukọ faili o wu \"& # 36 {faili% .txt} .utf8.converted \" .

Fun alaye diẹ sii, wo nipasẹ oju-iwe eniyan iconv.

$ man iconv

Lati ṣe atokọ itọsọna yii, oye koodu ati bii o ṣe le yipada lati inu eto fifi koodu kikọ si omiiran jẹ imọ pataki fun gbogbo olumulo kọmputa diẹ sii bẹ fun awọn olutẹpa eto nigbati o ba de si ifọrọranṣẹ pẹlu ọrọ.

Ni ikẹhin, o le ni ifọwọkan pẹlu wa nipa lilo apakan asọye ni isalẹ fun eyikeyi ibeere tabi esi.