Vyhledávání na webu

Jak převést soubory do kódování UTF-8 v Linuxu


V této příručce popíšeme, jaké kódování znaků a pokryjeme několik příkladů převodu souborů z jednoho kódování znaků na jiné pomocí nástroje příkazového řádku. Nakonec se podíváme na to, jak převést několik souborů z libovolné znakové sady (charset) do kódování UTF-8 v Linuxu.

Jak už možná máte na mysli, počítač nerozumí ani neukládá písmena, čísla ani nic jiného, co my jako lidé dokážeme vnímat kromě bitů. Bit má pouze dvě možné hodnoty, a to buď 0 nebo 1, true nebo false, ano nebo ne. Všechny ostatní věci, jako jsou písmena, čísla, obrázky, musí být reprezentovány v bitech, aby je počítač zpracoval.

Jednoduše řečeno, kódování znaků je způsob, jak informovat počítač, jak interpretovat hrubé nuly a jedničky do skutečných znaků, kde znak je reprezentován sadou čísel. Když zadáváme text do souboru, slova a věty, které tvoříme, jsou sestaveny z různých znaků a znaky jsou uspořádány do znakové sady.

Existují různá schémata kódování, například ASCII, ANSI, Unicode a další. Níže je uveden příklad kódování ASCII.

Character  bits
A               01000001
B               01000010

V Linuxu se k převodu textu z jedné formy kódování na jinou používá nástroj příkazového řádku iconv.

Kódování souboru můžete zkontrolovat pomocí příkazu file pomocí příznaku -i nebo --mime, který umožňuje tisk typu mime řetězec jako v příkladech níže:

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

Syntaxe pro použití iconv je následující:

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

Kde -f nebo --from-code znamená kódování vstupu a -t nebo --to-encoding určuje výstupní kódování.

Chcete-li zobrazit seznam všech známých kódovaných znakových sad, spusťte následující příkaz:

iconv -l 

Převeďte soubory z kódování UTF-8 na kódování ASCII

Dále se naučíme, jak převést z jednoho schématu kódování na jiné. Níže uvedený příkaz převede z kódování ISO-8859-1 na kódování UTF-8.

Zvažte soubor s názvem vstup.soubor, který obsahuje znaky:


� � � �

Začněme kontrolou kódování znaků v souboru a poté si prohlédněte obsah souboru. V těsné blízkosti můžeme převést všechny znaky do kódování ASCII.

Po spuštění příkazu iconv pak zkontrolujeme obsah výstupního souboru a nové kódování znaků, jak je uvedeno níže.

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 

Poznámka: V případě, že je do kódování přidán řetězec //IGNORE, zobrazí se znaky, které nelze převést, a zobrazí se chyba po konverzi.

Opět, předpokládejme, že řetězec //TRANSLIT je přidán do kódování jako ve výše uvedeném příkladu (ASCII//TRANSLIT), převáděné znaky se přepisují podle potřeby a pokud je to možné . Což znamená, že v případě, že znak nemůže být zastoupen v cílové znakové sadě, lze jej aproximovat pomocí jednoho nebo více podobně vypadajících znaků.

V důsledku toho je jakýkoli znak, který nelze přepsat a není v cílové znakové sadě, ve výstupu nahrazen otazníkem (?).

Převeďte více souborů do kódování UTF-8

Vraťme se k našemu hlavnímu tématu, chcete-li převést více nebo všechny soubory v adresáři do kódování UTF-8, můžete napsat malý skript shellu nazvaný encoding.sh takto:

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

Uložte soubor a poté vytvořte spustitelný skript. Spusťte jej z adresáře, kde jsou umístěny vaše soubory (*.txt).

chmod  +x  encoding.sh
./encoding.sh

Důležité: Tento skript můžete také použít pro obecný převod více souborů z jednoho daného kódování do jiného, jednoduše si pohrajte s hodnotami FROM_ENCODING a TO_ENCODING proměnná, nezapomeňte na název výstupního souboru "$ {file%.txt}.utf8.converted".

Další informace naleznete na manuálové stránce iconv.

man iconv

Abychom shrnuli tuto příručku, porozumění kódování a převodu z jednoho schématu kódování znaků na jiné je nezbytnou znalostí pro každého uživatele počítače a pro programátory, pokud jde o práci s textem.

Nakonec nás můžete kontaktovat pomocí sekce komentářů níže pro jakékoli dotazy nebo zpětnou vazbu.