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.