Hvordan konvertere filer til UTF-8-koding i Linux


I denne veiledningen vil vi beskrive hvilken tegnkoding og dekke noen få eksempler på konvertering av filer fra én tegnkoding til en annen ved hjelp av et kommandolinjeverktøy. Til slutt vil vi se på hvordan du konverterer flere filer fra et hvilket som helst tegnsett (tegnsett) til UTF-8-koding i Linux.

Som du sikkert har i tankene allerede, forstår eller lagrer ikke en datamaskin bokstaver, tall eller noe annet som vi som mennesker kan oppfatte bortsett fra biter. En bit har bare to mulige verdier, det vil si enten en 0 eller 1, true eller false, >ja eller nei. Alle andre ting som bokstaver, tall, bilder må representeres i biter for at en datamaskin skal behandle.

Enkelt sagt er tegnkoding en måte å informere en datamaskin om hvordan den skal tolke rå nuller og enere til faktiske tegn, der et tegn er representert med tallsett. Når vi skriver inn tekst i en fil, blir ordene og setningene vi danner laget av forskjellige tegn, og tegnene er organisert i et tegnsett.

Det finnes forskjellige kodingsskjemaer der ute, for eksempel ASCII, ANSI, Unicode blant andre. Nedenfor er et eksempel på ASCII-koding.

Character  bits
A               01000001
B               01000010

I Linux brukes kommandolinjeverktøyet iconv til å konvertere tekst fra en form for koding til en annen.

Du kan kontrollere kodingen av en fil ved å bruke fil-kommandoen ved å bruke -i eller --mime-flagget som muliggjør utskrift av mime-type streng som i eksemplene nedenfor:

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

Syntaksen for å bruke iconv er som følger:

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

Hvor -f eller --from-code betyr inngangskoding og -t eller --to-encoding spesifiserer utgangskoding.

For å liste opp alle kjente kodede tegnsett, kjør kommandoen nedenfor:

iconv -l 

Konverter filer fra UTF-8 til ASCII-koding

Deretter vil vi lære hvordan du konverterer fra ett kodingsskjema til et annet. Kommandoen nedenfor konverterer fra ISO-8859-1 til UTF-8-koding.

Tenk på en fil med navnet input.file som inneholder tegnene:


� � � �

La oss starte med å sjekke kodingen av tegnene i filen og deretter se på filinnholdet. På nært hold kan vi konvertere alle tegnene til ASCII-koding.

Etter å ha kjørt kommandoen iconv kontrollerer vi innholdet i utdatafilen og den nye kodingen av 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 

Merk: Hvis strengen //IGNORE legges til i koding, vises tegn som ikke kan konverteres og en feilmelding etter konvertering.

Igjen, forutsatt at strengen //TRANSLIT legges til til-koding som i eksemplet ovenfor (ASCII//TRANSLIT), blir tegn som konverteres translitterert etter behov og hvis mulig . Noe som innebærer at i tilfelle en karakter ikke kan representeres i måltegnsettet, kan den tilnærmes gjennom en eller flere lignende tegn.

Følgelig erstattes ethvert tegn som ikke kan translittereres og ikke er i måltegnsettet med et spørsmålstegn (?) i utdataene.

Konverter flere filer til UTF-8-koding

For å komme tilbake til hovedemnet vårt, for å konvertere flere eller alle filer i en katalog til UTF-8-koding, kan du skrive et lite skallskript kalt 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

Lagre filen, og gjør deretter skriptet kjørbart. Kjør den fra katalogen der filene dine (*.txt) er plassert.

chmod  +x  encoding.sh
./encoding.sh

Viktig: Du kan også bruke dette skriptet for generell konvertering av flere filer fra én gitt koding til en annen, bare lek med verdiene til FROM_ENCODING og TO_ENCODING-variabelen, ikke å glemme utdatafilnavnet "$ {file%.txt}.utf8.converted".

For mer informasjon, se gjennom man-siden for ikonv.

man iconv

For å oppsummere denne veiledningen, er det nødvendig kunnskap for hver datamaskinbruker å forstå koding og hvordan man konverterer fra ett tegnkodingsskjema til et annet for programmerere når det kommer til å håndtere tekst.

Til slutt kan du komme i kontakt med oss ved å bruke kommentarfeltet nedenfor for spørsmål eller tilbakemeldinger.