Giunsa ang Pag-convert sa mga File sa UTF-8 Encoding sa Linux


Niini nga giya, atong ihulagway kung unsa ang pag-encode sa karakter ug pagtabon sa pipila ka mga pananglitan sa pag-convert sa mga file gikan sa usa ka karakter nga pag-encode ngadto sa lain gamit ang command line tool. Unya sa katapusan, atong tan-awon kung giunsa ang pag-convert sa daghang mga file gikan sa bisan unsang set sa karakter (charset) ngadto sa pag-encode sa UTF-8 sa Linux.

Sama sa tingali naa na sa imong hunahuna, ang usa ka kompyuter dili makasabut o magtipig sa mga letra, numero o bisan unsang butang nga mahimo naton mahibal-an ingon mga tawo gawas sa mga piraso. Ang usa ka gamay adunay duha lamang ka posible nga mga bili, kana mao ang usa ka 0 o 1, true o false, oo o dili. Ang tanang butang sama sa mga letra, numero, mga hulagway kinahanglang irepresentar sa mga piraso aron maproseso sa kompyuter.

Sa yano nga mga termino, ang pag-encode sa karakter usa ka paagi sa pagpahibalo sa usa ka kompyuter kung giunsa paghubad ang mga hilaw nga sero ug ang mga sa aktuwal nga mga karakter, diin ang usa ka karakter girepresentar sa hugpong sa mga numero. Kung nag-type kita og teksto sa usa ka file, ang mga pulong ug mga sentence nga atong giporma giluto gikan sa lain-laing mga karakter, ug ang mga karakter giorganisar ngadto sa usa ka charset.

Adunay lainlaing mga laraw sa pag-encode sama sa ASCII, ANSI, Unicode ug uban pa. Sa ubos usa ka pananglitan sa pag-encode sa ASCII.

Character  bits
A               01000001
B               01000010

Sa Linux, ang iconv command line tool gigamit sa pag-convert sa teksto gikan sa usa ka porma sa pag-encode ngadto sa lain.

Mahimo nimong susihon ang pag-encode sa usa ka file gamit ang file command, pinaagi sa paggamit sa -i o --mime nga bandila nga makapahimo sa pag-imprinta sa mime type string sama sa mga pananglitan sa ubos:

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

Ang syntax sa paggamit sa iconv mao ang mosunod:

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

Diin ang -f o --from-code nagpasabot sa input encoding ug -t o --to-encoding nagtino pag-encode sa output.

Aron ilista ang tanan nga nahibal-an nga mga set sa karakter nga adunay code, padagana ang mando sa ubos:

$ iconv -l 

I-convert ang mga File gikan sa UTF-8 ngadto sa ASCII Encoding

Sunod, makakat-on kita kung unsaon pag-convert gikan sa usa ka encoding scheme ngadto sa lain. Ang sugo sa ubos nag-convert gikan sa ISO-8859-1 ngadto sa UTF-8 encoding.

Hunahunaa ang usa ka file nga ginganlag input.file nga adunay mga karakter:

� � � �

Magsugod kita pinaagi sa pagsusi sa pag-encode sa mga karakter sa file ug dayon tan-awon ang mga sulud sa file. Duol, mahimo natong i-convert ang tanang karakter ngadto sa ASCII encoding.

Pagkahuman sa pagdagan sa iconv nga mando, among susihon ang sulud sa output file ug ang bag-ong pag-encode sa mga karakter sama sa ubos.

$ 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 

Mubo nga sulat: Kung ang string //IGNORE idugang sa pag-encode, ang mga karakter nga dili makabig ug usa ka sayup ang gipakita pagkahuman sa pagkakabig.

Sa makausa pa, kung ang string //TRANSLIT gidugang sa pag-encode sama sa pananglitan sa ibabaw (ASCII//TRANSLIT), ang mga karakter nga gi-convert gi-transliterate kung gikinahanglan ug kung mahimo. Nga nagpasabot sa panghitabo nga ang usa ka karakter dili marepresentar sa target nga set sa karakter, kini mahimong mabanabana pinaagi sa usa o daghan pang susama nga hitsura nga mga karakter.

Tungod niini, ang bisan unsang karakter nga dili ma-transliterate ug wala sa target nga set sa karakter gipulihan sa marka sa pangutana (?) sa output.

I-convert ang Daghang mga File ngadto sa UTF-8 Encoding

Pagbalik sa among panguna nga hilisgutan, aron mabag-o ang daghang o tanan nga mga file sa usa ka direktoryo sa pag-encode sa UTF-8, mahimo kang magsulat og gamay nga script sa shell nga gitawag og encoding.sh sama sa mosunod:

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

I-save ang file, dayon himoa nga executable ang script. Dagan kini gikan sa direktoryo diin nahimutang ang imong mga file (*.txt).

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

Importante: Mahimo nimo usab nga gamiton kini nga script alang sa kinatibuk-ang pagkakabig sa daghang mga file gikan sa usa ka gihatag nga pag-encode ngadto sa lain, pagdula lang sa mga kantidad sa FROM_ENCODING ug TO_ENCODING variable, dili nakalimtan ang ngalan sa output file \$ {file%.txt}.utf8.converted\.

Para sa dugang nga impormasyon, tan-awa ang iconv man page.

$ man iconv

Sa pagsumada niini nga giya, ang pagsabut sa pag-encode ug kung unsaon pag-convert gikan sa usa ka character encoding scheme ngadto sa lain gikinahanglan nga kahibalo alang sa matag tiggamit sa kompyuter labi na alang sa mga programmer kon bahin sa pag-atubang sa teksto.

Sa katapusan, mahimo nimong makontak kami pinaagi sa paggamit sa seksyon sa komento sa ubos alang sa bisan unsang mga pangutana o feedback.