GNU/Linux >> Tutoriels Linux >  >> Linux

Conversion par lots de l'encodage dans les fichiers

Cygwin ou GnuWin32 fournissent des outils Unix comme iconv et dos2unix (et unix2dos ). Sous Unix/Linux/Cygwin, vous voudrez utiliser "windows-1252" comme encodage au lieu de ANSI (voir ci-dessous). (Sauf si vous savez que votre système utilise une page de code autre que 1252 comme page de code par défaut, auquel cas vous devrez indiquer à iconv la bonne page de codes à partir de laquelle traduire.)

Convertir à partir de un (-f ) à l'autre (-t ) avec :

$ iconv -f windows-1252 -t utf-8 infile > outfile

Ou sous une forme "trouver tout et conquérir" :

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;

Sinon :

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;

Cette question a été posée à plusieurs reprises sur ce site, alors voici quelques informations supplémentaires sur "ANSI". Dans une réponse à une question connexe, CesarB mentionne :

Il existe plusieurs encodages appelés "ANSI" dans Windows. En fait, ANSI est un terme impropre. iconv n'a aucun moyen de deviner ce que vous voulez.

L'encodage ANSI est l'encodage utilisé par les fonctions "A" dans l'API Windows (les fonctions "W" utilisent UTF-16). L'encodage auquel il correspond dépend généralement de la langue de votre système Windows. Le plus courant est le CP 1252 (également connu sous le nom de Windows-1252). Ainsi, lorsque votre éditeur dit ANSI, cela signifie "quelle que soit l'utilisation des fonctions API comme encodage ANSI par défaut", qui est l'encodage non Unicode par défaut utilisé dans votre système (et donc généralement celui qui est utilisé pour les fichiers texte).

La page vers laquelle il renvoie donne cette friandise historique (citée d'un PDF Microsoft) sur les origines du CP 1252 et de l'ISO-8859-1, un autre encodage souvent utilisé :

[...] cela vient du fait que la page de codes Windows 1252 était à l'origine basée sur un brouillon ANSI, qui est devenu la norme ISO 8859-1. Cependant, en ajoutant des points de code à la plage réservée aux codes de contrôle dans la norme ISO, la page de codes Windows 1252 et les pages de codes Windows suivantes basées à l'origine sur la série ISO 8859-x ont dévié de l'ISO. À ce jour, il n'est pas rare que la communauté de développement, à la fois à l'intérieur et à l'extérieur de Microsoft, confonde la page de code 8859-1 avec Windows 1252, ainsi que voir "ANSI" ou "A" utilisé pour signifier la prise en charge de la page de code Windows .


Avec PowerShell, vous pouvez faire quelque chose comme ceci :

Get-Content IN.txt | Out-File -encoding ENC -filepath OUT.txt

Alors que ENC est quelque chose comme unicode , ascii , utf8 , et utf32 . Consultez 'help out-file'.

Pour convertir tous les fichiers *.txt d'un répertoire en UTF-8, procédez comme suit :

foreach($i in ls -name DIR/*.txt) { \
    Get-Content DIR/$i | \
    Out-File -encoding utf8 -filepath DIR2/$i \
}

qui crée une version convertie de chaque fichier .txt dans DIR2.

Pour remplacer les fichiers dans tous les sous-répertoires, utilisez :

foreach($i in ls -recurse -filter "*.java") {
    $temp = Get-Content $i.fullname
    Out-File -filepath $i.fullname -inputobject $temp -encoding utf8 -force
}

La page Wikipédia sur les nouvelles lignes comporte une section sur les utilitaires de conversion.

Cela semble être votre meilleur pari pour une conversion en utilisant uniquement les outils fournis par Windows :

TYPE unix_file | FIND "" /V > dos_file

Linux
  1. Comment convertir des fichiers en codage UTF-8 sous Linux

  2. Comment accéder aux fichiers Ubuntu 11.04 sous Windows 7 ??

  3. Masquer les fichiers cachés Linux dans Windows

  4. Convertir un tas de fichiers BMP en JPEG sous Linux

  5. Comment convertir une machine Windows existante en VirtualBox ?

Convertissez votre installation Windows en VM sous Linux

Comment convertir par lots des fichiers PDF sous Linux

Comment convertir un fichier Windows en un fichier UNIX

10 exemples PuTTY PLINK pour automatiser les commandes Linux distantes à partir de fichiers batch Windows

Partage de fichiers entre Linux Mint et Windows 10

Redimensionner et compresser les fichiers PDF par lots