Kā konvertēt failus uz UTF-8 kodējumu Linux


Šajā rokasgrāmatā mēs aprakstīsim rakstzīmju kodējumu un aplūkosim dažus failu konvertēšanas piemērus no vienas rakstzīmes kodēšanas uz citu, izmantojot komandrindas rīku. Tad visbeidzot, mēs apskatīsim, kā konvertēt vairākus failus no jebkuras rakstzīmju kopas (simbolu kopas) uz UTF-8 kodējumu Linux.

Kā jūs, iespējams, jau esat domājis, dators nesaprot un nesaglabā burtus, ciparus vai neko citu, ko mēs kā cilvēki varam uztvert, izņemot bitus. Bitam ir tikai divas iespējamās vērtības, tas ir: 0 vai 1 , true vai false , vai no . Jebkurai citai lietai, piemēram, burtiem, cipariem, attēliem, datorā ir jābūt attēlotiem bitiem.

Vienkārši sakot, rakstzīmju kodēšana ir veids, kā informēt datoru, kā interpretēt neapstrādātas nulles un tās faktiskajās rakstzīmēs, kur rakstzīmi attēlo skaitļu kopa. Rakstot tekstu failā, vārdi un teikumi, kurus mēs veidojam, tiek gatavoti no dažādām rakstzīmēm, un rakstzīmes tiek sakārtotas rakstzīmē.

Ir dažādas kodēšanas shēmas, piemēram, ASCII, ANSI, Unicode. Zemāk ir ASCII kodēšanas piemērs.

Character  bits
A               01000001
B               01000010

Linux operētājsistēmā iconv komandrindas rīku izmanto, lai tekstu pārveidotu no viena kodēšanas veida uz citu.

Faila kodējumu var pārbaudīt, izmantojot faila komandu, izmantojot karodziņu -i vai --mime , kas ļauj izdrukāt mime tipa virknes, kā parādīts zemāk esošajos piemēros:

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

Iconv izmantošanas sintakse ir šāda:

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

Kur -f vai - from-code nozīmē ievades kodējumu un norāda -t vai --to-encoding izejas kodējums.

Lai uzskaitītu visas zināmās kodēto rakstzīmju kopas, palaidiet zemāk esošo komandu:

$ iconv -l 

Konvertējiet failus no UTF-8 uz ASCII kodējumu

Tālāk mēs uzzināsim, kā pārveidot no vienas kodēšanas shēmas uz citu. Zemāk esošā komanda no ISO-8859-1 pārveido par UTF-8 kodējumu.

Apsveriet failu ar nosaukumu input.file , kurā ir rakstzīmes:

� � � �

Sāksim ar faila rakstzīmju kodēšanas pārbaudi un pēc tam apskatiet faila saturu. Cieši mēs varam pārvērst visas rakstzīmes ASCII kodējumā.

Pēc komandas iconv palaišanas mēs pārbaudām izvades faila saturu un jauno rakstzīmju kodējumu, kā norādīts zemāk.

$ 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 

Piezīme. Ja kodējumam tiek pievienota virkne /IGNORE , rakstzīmes, kuras nevar pārveidot, un pēc pārveidošanas tiek parādīta kļūda.

Vēlreiz pieņemot, ka kodēšanai tiek pievienota virkne /TRANSLIT , kā parādīts iepriekšējā piemērā (ASCII/TRANSLIT), pārveidojamās rakstzīmes tiek transliterētas pēc nepieciešamības un, ja iespējams. Tas nozīmē, ka gadījumā, ja rakstzīmi nevar attēlot mērķa rakstzīmju kopā, to var tuvināt, izmantojot vienu vai vairākas līdzīga izskata rakstzīmes.

Līdz ar to jebkura rakstzīme, kuru nevar transliterēt un kura nav mērķa rakstzīmju kopā, izvadē tiek aizstāta ar jautājuma zīmi (?) .

Konvertējiet vairākus failus uz UTF-8 kodējumu

Atgriežoties pie mūsu galvenās tēmas, lai vairākus vai visus failus direktorijā pārveidotu par UTF-8 kodējumu, varat uzrakstīt nelielu apvalka skriptu ar nosaukumu encoding.sh šādi:

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

Saglabājiet failu un pēc tam izveidojiet skriptu izpildāmu. Palaidiet to no direktorijas, kurā atrodas jūsu faili ( * .txt ).

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

Svarīgi: Jūs varat arī izmantot šo skriptu vairāku failu vispārīgai konvertēšanai no viena norādītā kodējuma uz citu, vienkārši spēlējiet ar mainīgā FROM_ENCODING un TO_ENCODING vērtībām, nevis aizmirstot izvades faila nosaukumu "& # 36 {file% .txt} .utf8.konvertēts" .

Lai iegūtu vairāk informācijas, skatiet ikonv man lapu.

$ man iconv

Apkopojot šo rokasgrāmatu, izpratne par kodēšanu un to, kā pārveidot no vienas rakstzīmju kodēšanas shēmas uz citu, ir nepieciešamas zināšanas katram datora lietotājam, vairāk programmētājiem, runājot par tekstu.

Visbeidzot, ar visiem jautājumiem vai atsauksmēm varat sazināties ar mums, izmantojot komentāru sadaļu.