Birden fazla dosyayı * nix komut satırı araçlarını kullanarak UTF-8 kodlamasına nasıl dönüştürebilirim? [çift]


Yanıtlar:


56

iconv birçok karakter kodlaması arasında dönüşüm sağlar. Yani biraz bash büyüsü ekleyerek yazabiliriz

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

Bu, iconv -f ascii -t utf-8biten her dosyaya çalışır .txt, şifrelenmiş dosyayı aynı ada sahip bir dosyaya gönderir ancak .utf8.txtbunun yerine biter .txt.

Bu aslında dosyalarınıza bir şey yapmaz (ASCII UTF-8'in bir alt kümesi olduğundan) değil, kodlamalar arasında nasıl dönüşüm yapacağınızla ilgili sorunuza cevap vermek gibi.


2
Dosya adlarını boşluklarla işlemek için var $ i kodunu vermelisiniz.
Richard Hoskins

Bir şeyler yapacak, bir ürün reçetesi ekleyecektir ...
jason

İconv'nin bir ürün ağacı ekleyeceğine emin misin? UTF-8 ile olmayacağı izlenimi altındaydım.
Richard Hoskins

5
Bunu sadece iconv (GNU libiconv 1.11) ile test ettim ve bir BOM eklemedi. Anladığım kadarıyla iconv yalnızca ASCII'ye girmeyecek olan bir girdi varsa BOM ekleyecektir. BOM sorunlu ve UTF-8 ile gerekli değil.
Richard Hoskins

2
iconv sürümünüz -o parametresini desteklemiyorsa, kabuk yönlendirmesini kullanmak için doğrudan >> ile değiştirebilirsiniz.
rob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.