Sådan konverteres filer til UTF-8-kodning i Linux


I denne vejledning beskriver vi, hvilken tegnkodning der er, og dækker et par eksempler på konvertering af filer fra en tegnkodning til en anden ved hjælp af et kommandolinjeværktøj. Derefter vil vi endelig se på, hvordan man konverterer flere filer fra ethvert tegnsæt (charset) til UTF-8-kodning i Linux.

Som du sandsynligvis allerede har i tankerne, forstår eller gemmer en computer ikke bogstaver, tal eller andet, som vi som mennesker kan opfatte undtagen bits. En bit har kun to mulige værdier, det vil sige enten en 0 eller 1 , true eller false , ja eller nej . Hver anden ting som bogstaver, tal, billeder skal være repræsenteret i bits for at en computer kan behandle.

Enkelt sagt er tegnkodning en måde at informere en computer om, hvordan rå nuller og dem skal fortolkes til faktiske tegn, hvor et tegn er repræsenteret af et sæt tal. Når vi skriver tekst i en fil, koges de ord og sætninger, vi danner, op fra forskellige tegn, og tegn er organiseret i et tegnsæt.

Der er forskellige kodningsordninger derude, såsom ASCII, ANSI, Unicode blandt andre. Nedenfor er et eksempel på ASCII-kodning.

Character  bits
A               01000001
B               01000010

I Linux bruges ikonv kommandolinjeværktøjet til at konvertere tekst fra en form for kodning til en anden.

Du kan kontrollere kodningen af en fil ved hjælp af filkommandoen ved hjælp af -i eller --mime flag, som muliggør udskrivning af mime-type streng som i eksemplerne nedenfor:

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

Syntaksen for brug af iconv er som følger:

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

Hvor -f eller --from-kode betyder inputkodning og -t eller --to-encoding specificerer output-kodning.

For at liste alle kendte kodede tegnsæt skal du køre kommandoen nedenfor:

$ iconv -l 

Konverter filer fra UTF-8 til ASCII-kodning

Dernæst lærer vi at konvertere fra et kodningsskema til et andet. Kommandoen nedenfor konverterer fra ISO-8859-1 til UTF-8-kodning.

Overvej en fil med navnet input.file , der indeholder tegnene:

� � � �

Lad os starte med at kontrollere kodningen af tegnene i filen og derefter se filindholdet. Vi kan tæt konvertere alle tegn til ASCII-kodning.

Efter at have kørt ikonv-kommandoen kontrollerer vi derefter indholdet af outputfilen og den nye kodning af tegnene som nedenfor.

$ 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 

Bemærk: Hvis strengen /IGNORE føjes til kodning, vises tegn, der ikke kan konverteres, og en fejl vises efter konvertering.

Igen antager vi, at strengen /TRANSLIT føjes til kodning som i eksemplet ovenfor (ASCII/TRANSLIT), tegn, der konverteres, translittereres efter behov og om muligt. Hvilket indebærer, at i tilfælde af at et tegn ikke kan repræsenteres i målsættet, kan det tilnærmes gennem et eller flere lignende tegn.

Derfor erstattes ethvert tegn, der ikke kan translittereres og ikke er i måltegnsættet, med et spørgsmålstegn (?) i output.

Konverter flere filer til UTF-8-kodning

Når vi kommer tilbage til vores hovedemne, for at konvertere flere eller alle filer i en mappe til UTF-8-kodning, kan du skrive et lille shell-script kaldet encoding.sh som følger:

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

Gem filen, og gør derefter scriptet eksekverbart. Kør det fra det bibliotek, hvor dine filer ( * .txt ) er placeret.

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

Vigtigt: Du kan også bruge dette script til generel konvertering af flere filer fra en given kodning til en anden, du skal bare lege med værdierne for variablen FROM_ENCODING og TO_ENCODING , ikke glemmer outputfilnavnet "& # 36 {file% .txt} .utf8.converted" .

For mere information, se igennem iconv mandesiden.

$ man iconv

For at opsummere denne vejledning er forståelse af kodning og hvordan man konverterer fra et tegnkodningsskema til en anden nødvendig viden for enhver computerbruger mere for programmører, når det kommer til at håndtere tekst.

Endelig kan du komme i kontakt med os ved hjælp af kommentarsektionen nedenfor til spørgsmål eller feedback.