Come posso convertire più file nella codifica UTF-8 usando gli strumenti da riga di comando * nix? [duplicare]


Risposte:


56

iconv converte tra molte codifiche di caratteri. Quindi aggiungendo un po 'di magia bash e possiamo scrivere

for file in *.txt; do
    iconv -f ascii -t utf-8 "$file" -o "${file%.txt}.utf8.txt"
done

Questo verrà eseguito iconv -f ascii -t utf-8su tutti i file che terminano .txt, inviando il file ricodificato a un file con lo stesso nome ma terminando .utf8.txtinvece di .txt.

Non è che ciò farebbe effettivamente qualsiasi cosa ai tuoi file (perché ASCII è un sottoinsieme di UTF-8), ma per rispondere alla tua domanda su come convertire tra le codifiche.


2
Dovresti citare var $ i, al fine di gestire i nomi di file con spazi.
— Richard Hoskins,

Farà le cose, aggiungerà una DBA per una ...
— Jason

Sei sicuro che iconv aggiungerà una DBA? Avevo l'impressione che non sarebbe stato con UTF-8.
— Richard Hoskins,

5
Ho appena provato questo con iconv (GNU libiconv 1.11) e non ha aggiunto una DBA. Comprendo che iconv aggiungerà una DBA solo se presente nell'input, che non sarebbe in ASCII. Le BOM sono problematiche e non sono necessarie con UTF-8.
— Richard Hoskins,

2
se la tua versione di iconv non supporta il parametro -o puoi sostituirlo direttamente con >> per usare il reindirizzamento della shell.
— ruba il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.